[hamster-applet] remove widget listeners from dispatcher on destroy



commit 903bef7ccc11aec2f79202717318f593a3a8a312
Author: Toms Bauģis <toms baugis gmail com>
Date:   Wed Jan 20 11:41:04 2010 +0000

    remove widget listeners from dispatcher on destroy

 hamster/widgets/activityentry.py |    7 +++++++
 hamster/widgets/tags.py          |    6 ++++++
 2 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/hamster/widgets/activityentry.py b/hamster/widgets/activityentry.py
index 59e1468..7d19089 100644
--- a/hamster/widgets/activityentry.py
+++ b/hamster/widgets/activityentry.py
@@ -91,6 +91,7 @@ class ActivityEntry(gtk.Entry):
         self.connect("key-release-event", self._on_key_release_event)
         self.connect("focus-out-event", self._on_focus_out_event)
         self.connect("changed", self._on_text_changed)
+        self.connect("parent-set", self._on_parent_set)
 
         runtime.dispatcher.add_handler('activity_updated', self.after_activity_update)
 
@@ -298,3 +299,9 @@ class ActivityEntry(gtk.Entry):
             self.emit("value-entered")
 
         self.news = False
+
+
+    def _on_parent_set(self, old_parent, user_data):
+        # when parent changes to itself, that means that it has been actually deleted
+        if old_parent and old_parent == self.get_toplevel():
+            runtime.dispatcher.del_handler('activity_updated', self.after_activity_update)
diff --git a/hamster/widgets/tags.py b/hamster/widgets/tags.py
index 61cb23b..e49583c 100644
--- a/hamster/widgets/tags.py
+++ b/hamster/widgets/tags.py
@@ -57,6 +57,7 @@ class TagsEntry(gtk.Entry):
         self.connect("key-press-event", self._on_key_press_event)
         self.connect("key-release-event", self._on_key_release_event)
         self.connect("focus-out-event", self._on_focus_out_event)
+        self.connect("parent-set", self._on_parent_set)
 
         runtime.dispatcher.add_handler('new_tags_added', self.refresh_tags)
         self.show()
@@ -205,6 +206,11 @@ class TagsEntry(gtk.Entry):
 
         return False
 
+    def _on_parent_set(self, old_parent, user_data):
+        # when parent changes to itself, that means that it has been actually deleted
+        if old_parent and old_parent == self.get_toplevel():
+            runtime.dispatcher.del_handler('new_tags_added', self.refresh_tags)
+
 
 class TagBox(graphics.Area):
     __gsignals__ = {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]