From ff2dd6cc0e55aeceaf63cde10f58db3cec18493d Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Wed, 09 Sep 2009 12:41:37 +0000 Subject: Stop all animators on poup/popdown invoking #1310 --- diff --git a/src/sugar/graphics/palette.py b/src/sugar/graphics/palette.py index 2ea2376..f4b18c0 100644 --- a/src/sugar/graphics/palette.py +++ b/src/sugar/graphics/palette.py @@ -193,11 +193,17 @@ class Palette(PaletteWindow): state = self.PRIMARY self.set_palette_state(state) - self._secondary_anim.start() + if state == self.PRIMARY: + self._secondary_anim.start() + else: + self._secondary_anim.stop() - def on_popdown(self): - # to suppress glitches while later re-opening - self.set_palette_state(self.PRIMARY) + def popdown(self, immediate=False): + if immediate: + # to suppress glitches while later re-opening + self.set_palette_state(self.PRIMARY) + PaletteWindow.popdown(self, immediate) + self._secondary_anim.stop() def on_enter(self, event): PaletteWindow.on_enter(self, event) diff --git a/src/sugar/graphics/palettewindow.py b/src/sugar/graphics/palettewindow.py index 73c6ae7..d08052f 100644 --- a/src/sugar/graphics/palettewindow.py +++ b/src/sugar/graphics/palettewindow.py @@ -319,6 +319,7 @@ class PaletteWindow(gtk.Window): if not immediate: self._popup_anim.start() else: + self._popup_anim.stop() self.show() # we have to invoke update_position() twice # since WM could ignore first move() request @@ -326,20 +327,17 @@ class PaletteWindow(gtk.Window): def popdown(self, immediate=False): logging.debug('PaletteWindow.popdown immediate %r', immediate) - self._popup_anim.stop() + self._popup_anim.stop() self._mouse_detector.stop() if not immediate: self._popdown_anim.start() else: - self.on_popdown() + self._popdown_anim.stop() self.size_request() self.hide() - def on_popdown(self): - self._popdown_anim.stop() - def on_invoker_enter(self): self._mouse_detector.start() -- cgit v0.9.1