From ff56fb9271b2cb35122909182c5c4056184b1320 Mon Sep 17 00:00:00 2001
From: Aleksey Lim <alsroot@member.fsf.org>
Date: Wed, 9 Sep 2009 12:41:37 +0000
Subject: Stop all animators on poup/popdown invoking #1310
---
src/sugar/graphics/palette.py | 16 +++++++++++-----
src/sugar/graphics/palettewindow.py | 8 +++-----
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/sugar/graphics/palette.py b/src/sugar/graphics/palette.py
index 2ea2376..f4b18c0 100644
a
|
b
|
class Palette(PaletteWindow): |
193 | 193 | state = self.PRIMARY |
194 | 194 | self.set_palette_state(state) |
195 | 195 | |
196 | | self._secondary_anim.start() |
| 196 | if state == self.PRIMARY: |
| 197 | self._secondary_anim.start() |
| 198 | else: |
| 199 | self._secondary_anim.stop() |
197 | 200 | |
198 | | def on_popdown(self): |
199 | | # to suppress glitches while later re-opening |
200 | | self.set_palette_state(self.PRIMARY) |
| 201 | def popdown(self, immediate=False): |
| 202 | if immediate: |
| 203 | # to suppress glitches while later re-opening |
| 204 | self.set_palette_state(self.PRIMARY) |
| 205 | PaletteWindow.popdown(self, immediate) |
| 206 | self._secondary_anim.stop() |
201 | 207 | |
202 | 208 | def on_enter(self, event): |
203 | 209 | PaletteWindow.on_enter(self, event) |
diff --git a/src/sugar/graphics/palettewindow.py b/src/sugar/graphics/palettewindow.py
index 73c6ae7..d08052f 100644
a
|
b
|
class PaletteWindow(gtk.Window): |
319 | 319 | if not immediate: |
320 | 320 | self._popup_anim.start() |
321 | 321 | else: |
| 322 | self._popup_anim.stop() |
322 | 323 | self.show() |
323 | 324 | # we have to invoke update_position() twice |
324 | 325 | # since WM could ignore first move() request |
… |
… |
class PaletteWindow(gtk.Window): |
326 | 327 | |
327 | 328 | def popdown(self, immediate=False): |
328 | 329 | logging.debug('PaletteWindow.popdown immediate %r', immediate) |
329 | | self._popup_anim.stop() |
330 | 330 | |
| 331 | self._popup_anim.stop() |
331 | 332 | self._mouse_detector.stop() |
332 | 333 | |
333 | 334 | if not immediate: |
334 | 335 | self._popdown_anim.start() |
335 | 336 | else: |
336 | | self.on_popdown() |
| 337 | self._popdown_anim.stop() |
337 | 338 | self.size_request() |
338 | 339 | self.hide() |
339 | 340 | |
340 | | def on_popdown(self): |
341 | | self._popdown_anim.stop() |
342 | | |
343 | 341 | def on_invoker_enter(self): |
344 | 342 | self._mouse_detector.start() |
345 | 343 | |