前の関連記事:Calc(71)クリックした位置に出現するノンモダルダイアログ
Calc(70)クリックした位置に出現するモダルダイアログのリスナーの削除をしているメソッドの発火の確認
PopupModalDialogListenerLog.ods
Calc(70)クリックした位置に出現するモダルダイアログではダイアログの追加しているリスナーはKeyListenerとActionListenerです。
モダルダイアログの場合はダイアログを閉じるとダイアログのコントロールに追加したリスナーのdisposing()メソッドが発火していますので、そのメソッドでリスナーを削除すればよいわけです。
ドキュメントを閉じるとドキュメントに追加したDocumentEventListenerのdocumentEventOccured()メソッドが発火してOnUnloadイベントのときに、コントローラとドキュメントに追加したリスナーを削除しています。
Calc(71)クリックした位置に出現するノンモダルダイアログのリスナーの削除をしているメソッドの発火の確認
PopupNonmodalDialogListenerLog.ods
ノンモダルダイアログの場合は、ダイアログを閉じてもそのコントロールに追加したリスナーのdisposing()メソッドは発火せず、フレームに追加したCloseListenerのqueryClosing()メソッドだけが発火していることがわかります。
なのでこのqueryClosing()メソッドでノンモダルダイアログに追加しているリスナーをすべて削除しています。
ドキュメントに追加したリスナーはモダルダイアログのときと同じなので削除するときもモダルダイアログのマクロのときと同じメソッドになります。
モダルダイアログではリスナーを削除しなくても、表立って支障は起こらないのですが、ノンモダルダイアログの場合はきちっとリスナーを削除しないと、LibreOfficeがクラッシュします。
0 件のコメント:
コメントを投稿