From f2a8948bf15a5e669f02aa26d1e267ad11cb0ac8 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Thu, 18 Sep 2008 12:12:18 +0000 Subject: #8485 Detach from palette when a widget is destroyed --- (limited to 'src') diff --git a/src/sugar/graphics/radiotoolbutton.py b/src/sugar/graphics/radiotoolbutton.py index abdf54c..e2636dc 100644 --- a/src/sugar/graphics/radiotoolbutton.py +++ b/src/sugar/graphics/radiotoolbutton.py @@ -36,6 +36,12 @@ class RadioToolButton(gtk.RadioToolButton): self._palette_invoker.attach_tool(self) + self.connect('destroy', self.__destroy_cb) + + def __destroy_cb(self, icon): + if self._palette_invoker is not None: + self._palette_invoker.detach() + def set_tooltip(self, tooltip): """ Set a simple palette with just a single label. """ diff --git a/src/sugar/graphics/toggletoolbutton.py b/src/sugar/graphics/toggletoolbutton.py index ec622b4..35c4bf1 100644 --- a/src/sugar/graphics/toggletoolbutton.py +++ b/src/sugar/graphics/toggletoolbutton.py @@ -30,6 +30,12 @@ class ToggleToolButton(gtk.ToggleToolButton): self._palette_invoker = ToolInvoker(self) self.set_named_icon(named_icon) + self.connect('destroy', self.__destroy_cb) + + def __destroy_cb(self, icon): + if self._palette_invoker is not None: + self._palette_invoker.detach() + def set_named_icon(self, named_icon): icon = Icon(icon_name=named_icon) self.set_icon_widget(icon) diff --git a/src/sugar/graphics/toolbutton.py b/src/sugar/graphics/toolbutton.py index 715e7a9..a80c67a 100644 --- a/src/sugar/graphics/toolbutton.py +++ b/src/sugar/graphics/toolbutton.py @@ -68,6 +68,12 @@ class ToolButton(gtk.ToolButton): self.get_child().connect('can-activate-accel', self.__button_can_activate_accel_cb) + self.connect('destroy', self.__destroy_cb) + + def __destroy_cb(self, icon): + if self._palette_invoker is not None: + self._palette_invoker.detach() + def __button_can_activate_accel_cb(self, button, signal_id): # Accept activation via accelerators regardless of this widget's state return True diff --git a/src/sugar/graphics/tray.py b/src/sugar/graphics/tray.py index 8296a53..d5e9b39 100644 --- a/src/sugar/graphics/tray.py +++ b/src/sugar/graphics/tray.py @@ -358,6 +358,12 @@ class TrayIcon(gtk.ToolItem): self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE) + self.connect('destroy', self.__destroy_cb) + + def __destroy_cb(self, icon): + if self._palette_invoker is not None: + self._palette_invoker.detach() + def create_palette(self): return None -- cgit v0.9.1