diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2007-08-20 18:01:27 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <mpg@redhat.com> | 2007-08-20 18:01:27 (GMT) |
commit | 3b8f25b7b9949b2bb2857d8ad9d5987cd278bd97 (patch) | |
tree | 1cb776a27c083983ea4577f04189db7bc5aed9e2 /sugar | |
parent | 1c06a44a7d55c40e682592a517e320b3c514a229 (diff) |
Implement "scrubbing" of palettes based on groups.
Diffstat (limited to 'sugar')
-rw-r--r-- | sugar/graphics/palette.py | 24 | ||||
-rw-r--r-- | sugar/graphics/palettegroup.py | 5 |
2 files changed, 24 insertions, 5 deletions
diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py index 9b27163..1d90391 100644 --- a/sugar/graphics/palette.py +++ b/sugar/graphics/palette.py @@ -194,6 +194,7 @@ class Palette(gtk.Window): group = palettegroup.get_group(self._group_id) group.remove(self) if group_id: + self._group_id = group_id group = palettegroup.get_group(group_id) group.add(self) @@ -412,16 +413,21 @@ class Palette(gtk.Window): self._up = False self.emit('popdown') - def popup(self): + def popup(self, immediate=False): self._popdown_anim.stop() - self._popup_anim.start() + + if not immediate: + self._popup_anim.start() + else: + self._show() + self._secondary_anim.start() - def popdown(self, inmediate=False): + def popdown(self, immediate=False): self._secondary_anim.stop() self._popup_anim.stop() - if not inmediate: + if not immediate: self._popdown_anim.start() else: self._hide() @@ -440,7 +446,15 @@ class Palette(gtk.Window): self._state = state def _invoker_mouse_enter_cb(self, invoker): - self.popup() + immediate = False + if self._group_id: + group = palettegroup.get_group(self._group_id) + if group and group.is_up(): + immediate = True + group.popdown() + + print immediate + self.popup(immediate=immediate) def _invoker_mouse_leave_cb(self, invoker): self.popdown() diff --git a/sugar/graphics/palettegroup.py b/sugar/graphics/palettegroup.py index d5e1125..f120c40 100644 --- a/sugar/graphics/palettegroup.py +++ b/sugar/graphics/palettegroup.py @@ -58,6 +58,11 @@ class Group(gobject.GObject): self._palettes.remove(palette) + def popdown(self): + for palette in self._palettes: + if palette.is_up(): + palette.popdown(immediate=True) + def _palette_popup_cb(self, palette): if not self._up: self.emit('popup') |