[geary] Fix ComposerWidget never being finalised.



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]