diff options
-rw-r--r-- | src/sugar/graphics/palettewindow.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/sugar/graphics/palettewindow.py b/src/sugar/graphics/palettewindow.py index ee9be96..5281e54 100644 --- a/src/sugar/graphics/palettewindow.py +++ b/src/sugar/graphics/palettewindow.py @@ -643,7 +643,13 @@ class Invoker(gobject.GObject): if self._palette is not None: self._palette.popdown(immediate=True) self._palette.props.invoker = None - self._palette.destroy() + # GTK pops down the palette before it invokes the actions on the + # menu item. We need to postpone destruction of the palette until + # after all signals have propagated from the menu item to the + # palette owner. + gobject.idle_add(lambda old_palette=self._palette: + old_palette.destroy(), + priority=gobject.PRIORITY_LOW) self._palette = palette |