Replace "expose-event" signal by a new "draw" signal

GtkWidget "expose-event" signal has been replaced by
a new "draw" signal [1]. The context is already
clipped [2], so do not base it on the values returned by
get_allocation like before.

[1] http://developer.gnome.org/gtk3/3.0/ch25s02.html#id1467092
[2] http://developer.gnome.org/gtk3/3.0/GtkWidget.html#GtkWidget-draw

Signed-off-by: Simon Schampijer <simon@schampijer.de>
[squashed with a patch by Benjamin Berg <benjamin@sipsolutions.net>;
 removed useless additions]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
This commit is contained in:
Simon Schampijer 2011-10-30 23:06:13 +01:00
parent 157124af5b
commit 1b9af6f6d5
2 changed files with 10 additions and 11 deletions

View File

@ -351,10 +351,9 @@ class _TimeoutIcon(Gtk.Alignment):
self._text.set_attributes(attrlist) self._text.set_attributes(attrlist)
self.add(self._text) self.add(self._text)
self._text.show() self._text.show()
self.connect("expose_event", self.__expose_cb) self.connect('draw', self.__draw_cb)
def __expose_cb(self, widget, event): def __draw_cb(self, widget, context):
context = widget.get_window().cairo_create()
self._draw(context) self._draw(context)
return False return False
@ -364,13 +363,15 @@ class _TimeoutIcon(Gtk.Alignment):
self._text.size_request() self._text.size_request()
def _draw(self, context): def _draw(self, context):
rect = self.get_allocation() w = self.get_allocated_width()
x = rect.x + rect.width * 0.5 h = self.get_allocated_height()
y = rect.y + rect.height * 0.5 x = w * 0.5
radius = rect.width / 2 y = h * 0.5
radius = w / 2
context.arc(x, y, radius, 0, 2 * math.pi) context.arc(x, y, radius, 0, 2 * math.pi)
widget_style = self.get_style() widget_style = self.get_style()
context.set_source_color(widget_style.bg[self.get_state()]) color = widget_style.bg[self.get_state()]
context.set_source_rgb(color.red, color.green, color.blue)
context.fill_preserve() context.fill_preserve()
def set_text(self, text): def set_text(self, text):

View File

@ -385,7 +385,7 @@ class Icon(Gtk.Image):
width = 0 width = 0
return (width, width) return (width, width)
def do_expose_event(self, event): def do_draw(self, cr):
""" """
Parameters Parameters
---------- ----------
@ -414,8 +414,6 @@ class Icon(Gtk.Image):
y = math.floor(ypad + y = math.floor(ypad +
(allocation.height - requisition.height) * yalign) (allocation.height - requisition.height) * yalign)
cr = self.get_window().cairo_create()
if self._scale != 1.0: if self._scale != 1.0:
cr.scale(self._scale, self._scale) cr.scale(self._scale, self._scale)