Calc(72)リスナーの削除をしているメソッドの発火の確認をするためのマクロ

2018-02-05

旧ブログ

t f B! P L
Calc(70)クリックした位置に出現するモダルダイアログCalc(71)クリックした位置に出現するノンモダルダイアログのリスナーが削除されているか、その削除をしているメソッドの発火をLibreOffice5(139)リスナーのメソッドの発火ログを取得するのコードを追加して確認しました。

前の関連記事:Calc(71)クリックした位置に出現するノンモダルダイアログ


Calc(70)クリックした位置に出現するモダルダイアログのリスナーの削除をしているメソッドの発火の確認


PopupModalDialogListenerLog.ods


Calc(70)クリックした位置に出現するモダルダイアログではダイアログの追加しているリスナーはKeyListenerとActionListenerです。

モダルダイアログの場合はダイアログを閉じるとダイアログのコントロールに追加したリスナーのdisposing()メソッドが発火していますので、そのメソッドでリスナーを削除すればよいわけです。


ドキュメントを閉じるとドキュメントに追加したDocumentEventListenerのdocumentEventOccured()メソッドが発火してOnUnloadイベントのときに、コントローラとドキュメントに追加したリスナーを削除しています。

Calc(71)クリックした位置に出現するノンモダルダイアログのリスナーの削除をしているメソッドの発火の確認


PopupNonmodalDialogListenerLog.ods


ノンモダルダイアログの場合は、ダイアログを閉じてもそのコントロールに追加したリスナーのdisposing()メソッドは発火せず、フレームに追加したCloseListenerのqueryClosing()メソッドだけが発火していることがわかります。

なのでこのqueryClosing()メソッドでノンモダルダイアログに追加しているリスナーをすべて削除しています。

ドキュメントに追加したリスナーはモダルダイアログのときと同じなので削除するときもモダルダイアログのマクロのときと同じメソッドになります。

モダルダイアログではリスナーを削除しなくても、表立って支障は起こらないのですが、ノンモダルダイアログの場合はきちっとリスナーを削除しないと、LibreOfficeがクラッシュします。

次の関連記事:Calc(73)クリックした位置に出現するモダルダイアログ2

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ