[geary] Fix ComposerWidget never being finalised.
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary] Fix ComposerWidget never being finalised.
- Date: Fri, 23 Sep 2016 00:55:52 +0000 (UTC)
commit 42ef49bd0fbdb1b203357ea0729999aa6c35ca8f
Author: Michael James Gratton <mike vee net>
Date: Tue Sep 20 22:17:51 2016 +1000
Fix ComposerWidget never being finalised.
* src/client/composer/composer-widget.vala (ComposerWidget): Closure for
conversation_viewer signal handler somehow kept a reference that wasn't
an issue if the closure didn't include the viewer instance??
src/client/composer/composer-widget.vala | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala
index 6bd5449..ecc2981 100644
--- a/src/client/composer/composer-widget.vala
+++ b/src/client/composer/composer-widget.vala
@@ -527,14 +527,19 @@ public class ComposerWidget : Gtk.EventBox {
chain.append(this.attachments_box);
this.composer_container.set_focus_chain(chain);
- // Remind the conversation viewer of draft ids when it reloads
+ // Remind the conversation viewer of draft ids when it
+ // reloads. Need to use the signal handler's viewer instance
+ // to avoid some sort of ref that is preventing the composer
+ // from being finalised when closed.
ConversationViewer conversation_viewer =
GearyApplication.instance.controller.main_window.conversation_viewer;
- conversation_viewer.cleared.connect(() => {
+ conversation_viewer.cleared.connect((viewer) => {
if (this.draft_manager != null)
- conversation_viewer.blacklist_by_id(this.draft_manager.current_draft_id);
+ viewer.blacklist_by_id(this.draft_manager.current_draft_id);
});
+ // Don't do this in an overridden version of the destroy
+ // method, it somehow ends up in an infinite loop
destroy.connect(() => { close_draft_manager_async.begin(null); });
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]