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:
parent
157124af5b
commit
1b9af6f6d5
@ -351,10 +351,9 @@ class _TimeoutIcon(Gtk.Alignment):
|
||||
self._text.set_attributes(attrlist)
|
||||
self.add(self._text)
|
||||
self._text.show()
|
||||
self.connect("expose_event", self.__expose_cb)
|
||||
self.connect('draw', self.__draw_cb)
|
||||
|
||||
def __expose_cb(self, widget, event):
|
||||
context = widget.get_window().cairo_create()
|
||||
def __draw_cb(self, widget, context):
|
||||
self._draw(context)
|
||||
return False
|
||||
|
||||
@ -364,13 +363,15 @@ class _TimeoutIcon(Gtk.Alignment):
|
||||
self._text.size_request()
|
||||
|
||||
def _draw(self, context):
|
||||
rect = self.get_allocation()
|
||||
x = rect.x + rect.width * 0.5
|
||||
y = rect.y + rect.height * 0.5
|
||||
radius = rect.width / 2
|
||||
w = self.get_allocated_width()
|
||||
h = self.get_allocated_height()
|
||||
x = w * 0.5
|
||||
y = h * 0.5
|
||||
radius = w / 2
|
||||
context.arc(x, y, radius, 0, 2 * math.pi)
|
||||
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()
|
||||
|
||||
def set_text(self, text):
|
||||
|
@ -385,7 +385,7 @@ class Icon(Gtk.Image):
|
||||
width = 0
|
||||
return (width, width)
|
||||
|
||||
def do_expose_event(self, event):
|
||||
def do_draw(self, cr):
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
@ -414,8 +414,6 @@ class Icon(Gtk.Image):
|
||||
y = math.floor(ypad +
|
||||
(allocation.height - requisition.height) * yalign)
|
||||
|
||||
cr = self.get_window().cairo_create()
|
||||
|
||||
if self._scale != 1.0:
|
||||
cr.scale(self._scale, self._scale)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user