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>
This commit is contained in:
Benjamin Berg 2011-10-30 12:20:41 +01:00 committed by Simon Schampijer
parent 327ca88ca8
commit e05f84bc4f

View File

@ -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):
"""
Parameters
----------
requisition :
Returns
-------
None
"""
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() height = surface.get_height()
requisition[1] = surface.get_height() elif self._buffer.height:
elif self._buffer.width and self._buffer.height: height = self._buffer.height
requisition[0] = self._buffer.width
requisition[1] = self._buffer.width
else: else:
requisition[0] = requisition[1] = 0 height = 0
return (height, height)
def do_get_preferred_width(self):
self._sync_image_properties()
surface = self._buffer.get_surface()
if surface:
width = surface.get_width()
elif self._buffer.width:
width = self._buffer.width
else:
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()