From c7d730e1ac7159c0f0ce13804cbf18941df7caf2 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Sun, 8 Jul 2007 10:29:43 -0400 Subject: [PATCH] Hide palettes on iconbutton/toolbutton clicked --- sugar/graphics/iconbutton.py | 5 +++++ sugar/graphics/palette.py | 8 ++++++-- sugar/graphics/toolbutton.py | 5 +++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/sugar/graphics/iconbutton.py b/sugar/graphics/iconbutton.py index f98b0163..c99c8358 100644 --- a/sugar/graphics/iconbutton.py +++ b/sugar/graphics/iconbutton.py @@ -48,6 +48,7 @@ class IconButton(CanvasIcon, hippo.CanvasItem): self.props.stroke_color = color.BUTTON_NORMAL self._set_size(STANDARD_SIZE) + self.connect('activated', self._icon_clicked_cb) def _set_size(self, size): if size == SMALL_SIZE: @@ -85,3 +86,7 @@ class IconButton(CanvasIcon, hippo.CanvasItem): else: self.props.background_color = \ color.BUTTON_BACKGROUND_NORMAL.get_int() + + def _icon_clicked_cb(self, button): + if self._palette: + self._palette.popdown(True) diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py index 1a019b82..c241def4 100644 --- a/sugar/graphics/palette.py +++ b/sugar/graphics/palette.py @@ -259,10 +259,14 @@ class Palette(gobject.GObject): self._popup_anim.start() self._secondary_anim.start() - def popdown(self): + def popdown(self, inmediate=False): self._secondary_anim.stop() self._popup_anim.stop() - self._popdown_anim.start() + + if not inmediate: + self._popdown_anim.start() + else: + self._hide() def invoker_mouse_enter(self): self.popup() diff --git a/sugar/graphics/toolbutton.py b/sugar/graphics/toolbutton.py index f101803e..e5d90ab8 100644 --- a/sugar/graphics/toolbutton.py +++ b/sugar/graphics/toolbutton.py @@ -28,6 +28,7 @@ class ToolButton(gtk.ToolButton): gtk.ToolButton.__init__(self) self._palette = None self.set_icon(icon_name) + self.connect('clicked', self._button_clicked_cb) def set_icon(self, icon_name): icon = Icon(icon_name) @@ -44,4 +45,8 @@ class ToolButton(gtk.ToolButton): def set_tooltip(self, text): self.set_palette(Palette(text)) + def _button_clicked_cb(self, widget): + if self._palette: + self._palette.popdown(True) + palette = property(get_palette, set_palette)