Icon: port to new Height-for-width Geometry Management

GTK3 has replaced [1] the GTK2 geometry management with Height-for-width
Geometry Management [2]. This means we need to replace size_request() methods
with get_preferred_{width,height}().

[1] http://developer.gnome.org/gtk3/3.0/ch25s02.html#id1525688
[2] http://developer.gnome.org/gtk3/3.0/GtkWidget.html#geometry-management

Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
[assembled from several patches; fixed up left-over plus sign; added
description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
master
Benjamin Berg 13 years ago committed by Simon Schampijer
parent 327ca88ca8
commit e05f84bc4f

@ -362,27 +362,27 @@ class Icon(Gtk.Image):
def _file_changed_cb(self, image, pspec): def _file_changed_cb(self, image, pspec):
self._buffer.file_name = self.props.file self._buffer.file_name = self.props.file
def do_size_request(self, requisition): def do_get_preferred_height(self):
""" self._sync_image_properties()
Parameters surface = self._buffer.get_surface()
---------- if surface:
requisition : height = surface.get_height()
elif self._buffer.height:
Returns height = self._buffer.height
------- else:
None height = 0
return (height, height)
""" def do_get_preferred_width(self):
self._sync_image_properties() self._sync_image_properties()
surface = self._buffer.get_surface() surface = self._buffer.get_surface()
if surface: if surface:
requisition[0] = surface.get_width() width = surface.get_width()
requisition[1] = surface.get_height() elif self._buffer.width:
elif self._buffer.width and self._buffer.height: width = self._buffer.width
requisition[0] = self._buffer.width
requisition[1] = self._buffer.width
else: else:
requisition[0] = requisition[1] = 0 width = 0
return (width, width)
def do_expose_event(self, event): def do_expose_event(self, event):
""" """
@ -408,9 +408,9 @@ class Icon(Gtk.Image):
xalign = 1.0 - xalign xalign = 1.0 - xalign
allocation = self.get_allocation() allocation = self.get_allocation()
x = math.floor(allocation.x + xpad + x = math.floor(xpad +
(allocation.width - requisition.width) * xalign) (allocation.width - requisition.width) * xalign)
y = math.floor(allocation.y + ypad + y = math.floor(ypad +
(allocation.height - requisition.height) * yalign) (allocation.height - requisition.height) * yalign)
cr = self.get_window().cairo_create() cr = self.get_window().cairo_create()

Loading…
Cancel
Save