#5532: Fix memory leak when a buddy disappears.

This commit is contained in:
Tomeu Vizoso
2008-01-09 21:21:06 +01:00
parent 86b943b244
commit 83353f3c72
7 changed files with 64 additions and 53 deletions
+5
View File
@@ -423,6 +423,11 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
hippo.CanvasBox.__init__(self, **kwargs)
self._palette = None
self.connect('destroy', self.__destroy_cb)
def __destroy_cb(self, icon):
if self._palette is not None:
self._palette.destroy()
def do_set_property(self, pspec, value):
if pspec.name == 'file-name':
+7
View File
@@ -148,6 +148,7 @@ class Palette(gtk.Window):
# Just assume xthickness and ythickness are the same
self.set_border_width(self.style.xthickness)
self.connect('realize', self._realize_cb)
self.connect('destroy', self.__destroy_cb)
self.palette_state = self.PRIMARY
@@ -217,6 +218,12 @@ class Palette(gtk.Window):
self._mouse_detector = MouseSpeedDetector(self, 200, 5)
self._mouse_detector.connect('motion-slow', self._mouse_slow_cb)
def __destroy_cb(self, palette):
self.set_group_id(None)
if self._palette_popup_sid is not None:
_palette_observer.disconnect(self._palette_popup_sid)
def _add_menu(self):
self._menu_box = gtk.VBox()
self._secondary_box.pack_start(self._menu_box)
+1
View File
@@ -68,6 +68,7 @@ class Group(gobject.GObject):
palette.disconnect(sid)
self._palettes.remove(palette)
del self._sig_ids[palette]
def popdown(self):
for palette in self._palettes: