From 4f1986e8a4e3ce567595404a9d425a58f16f4f1c Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 15 Aug 2007 19:18:58 +0000 Subject: Let the invoker deal with popup/popdown redraw. --- (limited to 'sugar') diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py index 368a0f6..2d6b35b 100644 --- a/sugar/graphics/palette.py +++ b/sugar/graphics/palette.py @@ -398,6 +398,9 @@ class Palette(gtk.Window): self.menu.set_active(True) self.show() + if self._invoker: + self._invoker.notify_popup() + self._up = True _palette_observer.emit('popup', self) self.emit('popup') @@ -406,9 +409,13 @@ class Palette(gtk.Window): if not self._palette_popup_sid is None: _palette_observer.disconnect(self._palette_popup_sid) self._palette_popup_sid = None + self.menu.set_active(False) self.hide() + if self._invoker: + self._invoker.notify_popdown() + self._up = False self.emit('popdown') @@ -543,6 +550,12 @@ class Invoker(gobject.GObject): height = gtk.gdk.screen_height() return gtk.gdk.Rectangle(0, 0, width, height) + def notify_popup(self): + pass + + def notify_popdown(self): + pass + class WidgetInvoker(Invoker): def __init__(self, widget): Invoker.__init__(self) @@ -602,6 +615,12 @@ class WidgetInvoker(Invoker): def get_toplevel(self): return self._widget.get_toplevel() + def notify_popup(self): + self._widget.queue_draw() + + def notify_popdown(self): + self._widget.queue_draw() + class CanvasInvoker(Invoker): def __init__(self, item): Invoker.__init__(self) diff --git a/sugar/graphics/radiotoolbutton.py b/sugar/graphics/radiotoolbutton.py index fb584ee..67bb398 100644 --- a/sugar/graphics/radiotoolbutton.py +++ b/sugar/graphics/radiotoolbutton.py @@ -41,9 +41,6 @@ class RadioToolButton(gtk.RadioToolButton): 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._palette = Palette(text) @@ -57,8 +54,4 @@ class RadioToolButton(gtk.RadioToolButton): gtk.RadioToolButton.do_expose_event(self, event) - def _palette_changed(self, palette): - # Force a redraw to update the invoker rectangle - self.queue_draw() - palette = property(get_palette, set_palette) diff --git a/sugar/graphics/toggletoolbutton.py b/sugar/graphics/toggletoolbutton.py index 41050e2..196741a 100644 --- a/sugar/graphics/toggletoolbutton.py +++ b/sugar/graphics/toggletoolbutton.py @@ -40,9 +40,6 @@ class ToggleToolButton(gtk.ToggleToolButton): 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._palette = Palette(text) @@ -56,8 +53,4 @@ class ToggleToolButton(gtk.ToggleToolButton): gtk.ToggleToolButton.do_expose_event(self, event) - def _palette_changed(self, palette): - # Force a redraw to update the invoker rectangle - self.queue_draw() - palette = property(get_palette, set_palette) diff --git a/sugar/graphics/toolbutton.py b/sugar/graphics/toolbutton.py index 52a5d62..11c803e 100644 --- a/sugar/graphics/toolbutton.py +++ b/sugar/graphics/toolbutton.py @@ -43,9 +43,6 @@ class ToolButton(gtk.ToolButton): 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)) @@ -62,8 +59,4 @@ class ToolButton(gtk.ToolButton): 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) -- cgit v0.9.1