diff options
author | Benjamin Berg <benjamin@sipsolutions.net> | 2007-08-10 16:29:28 (GMT) |
---|---|---|
committer | Benjamin Berg <benjamin@sipsolutions.net> | 2007-08-10 16:29:28 (GMT) |
commit | 6573e8c5e6ed9ec8c9e7af10c6ad34acb10bcd67 (patch) | |
tree | 8c4df4ab62207e5a4dd075344844a8c1cd89be39 /sugar/graphics/toolbutton.py | |
parent | 6aeb95aa467c30c878ba29c66461d9254c7a7392 (diff) |
Draw an invoker rectangle that looks connected to the main palette.
There is one catch though, the menu placement inside the palette seems broken.
(Probably was already broken before.) Not sure what is going on there.
Diffstat (limited to 'sugar/graphics/toolbutton.py')
-rw-r--r-- | sugar/graphics/toolbutton.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sugar/graphics/toolbutton.py b/sugar/graphics/toolbutton.py index e5d90ab..c447b3c 100644 --- a/sugar/graphics/toolbutton.py +++ b/sugar/graphics/toolbutton.py @@ -23,6 +23,7 @@ from sugar.graphics.icon import Icon from sugar.graphics.palette import Palette, WidgetInvoker class ToolButton(gtk.ToolButton): + __gtype_name__ = "SugarToolButton" def __init__(self, icon_name=None): gtk.ToolButton.__init__(self) @@ -41,12 +42,28 @@ class ToolButton(gtk.ToolButton): def set_palette(self, palette): self._palette = palette self._palette.props.invoker = WidgetInvoker(self.child) + self._palette.props.draw_gap = True + + self._palette.connect("popup", self._palette_changed) + self._palette.connect("popdown", self._palette_changed) def set_tooltip(self, text): self.set_palette(Palette(text)) + def do_expose_event(self, event): + if self._palette: + if self._palette.is_up() or self.child.state == gtk.STATE_PRELIGHT: + invoker = self._palette.props.invoker + invoker.draw_invoker_rect(event, self._palette) + + gtk.ToolButton.do_expose_event(self, event) + def _button_clicked_cb(self, widget): if self._palette: self._palette.popdown(True) + def _palette_changed(self, palette): + # Force a redraw to update the invoker rectangle + self.queue_draw() + palette = property(get_palette, set_palette) |