summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2020-11-28 18:35:54 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2020-11-28 19:21:23 +0000
commit3eaebf1e0bfb6b07751bd82d853d162517c7a352 (patch)
treed52ef9cac97d2a918dbc8d430225fec71a7b060c
parente540ccbd34f19008d187cce34b0a4655d81c0ce8 (diff)
downloadgtk+-3eaebf1e0bfb6b07751bd82d853d162517c7a352.tar.gz
Port GtkCellRendererPixbuf to preferred size vfuncs
Drop the GtkCellRendererClass.get_size() override.
-rw-r--r--gtk/gtkcellrendererpixbuf.c71
1 files changed, 58 insertions, 13 deletions
diff --git a/gtk/gtkcellrendererpixbuf.c b/gtk/gtkcellrendererpixbuf.c
index e94331c1bc..c6e1731a60 100644
--- a/gtk/gtkcellrendererpixbuf.c
+++ b/gtk/gtkcellrendererpixbuf.c
@@ -58,7 +58,7 @@ static void gtk_cell_renderer_pixbuf_set_property (GObject *
guint param_id,
const GValue *value,
GParamSpec *pspec);
-static void gtk_cell_renderer_pixbuf_get_size (GtkCellRenderer *cell,
+static void gtk_cell_renderer_pixbuf_get_size (GtkCellRendererPixbuf *self,
GtkWidget *widget,
const GdkRectangle *rectangle,
int *x_offset,
@@ -134,6 +134,48 @@ gtk_cell_renderer_pixbuf_finalize (GObject *object)
G_OBJECT_CLASS (gtk_cell_renderer_pixbuf_parent_class)->finalize (object);
}
+static GtkSizeRequestMode
+gtk_cell_renderer_pixbuf_get_request_mode (GtkCellRenderer *cell)
+{
+ return GTK_SIZE_REQUEST_CONSTANT_SIZE;
+}
+
+static void
+gtk_cell_renderer_pixbuf_get_preferred_width (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ int *minimum,
+ int *natural)
+{
+ int size = 0;
+
+ gtk_cell_renderer_pixbuf_get_size (GTK_CELL_RENDERER_PIXBUF (cell), widget, NULL,
+ NULL, NULL, &size, NULL);
+
+ if (minimum != NULL)
+ *minimum = size;
+
+ if (natural != NULL)
+ *natural = size;
+}
+
+static void
+gtk_cell_renderer_pixbuf_get_preferred_height (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ int *minimum,
+ int *natural)
+{
+ int size = 0;
+
+ gtk_cell_renderer_pixbuf_get_size (GTK_CELL_RENDERER_PIXBUF (cell), widget, NULL,
+ NULL, NULL, NULL, &size);
+
+ if (minimum != NULL)
+ *minimum = size;
+
+ if (natural != NULL)
+ *natural = size;
+}
+
static void
gtk_cell_renderer_pixbuf_class_init (GtkCellRendererPixbufClass *class)
{
@@ -145,7 +187,9 @@ gtk_cell_renderer_pixbuf_class_init (GtkCellRendererPixbufClass *class)
object_class->get_property = gtk_cell_renderer_pixbuf_get_property;
object_class->set_property = gtk_cell_renderer_pixbuf_set_property;
- cell_class->get_size = gtk_cell_renderer_pixbuf_get_size;
+ cell_class->get_request_mode = gtk_cell_renderer_pixbuf_get_request_mode;
+ cell_class->get_preferred_width = gtk_cell_renderer_pixbuf_get_preferred_width;
+ cell_class->get_preferred_height = gtk_cell_renderer_pixbuf_get_preferred_height;
cell_class->snapshot = gtk_cell_renderer_pixbuf_snapshot;
g_object_class_install_property (object_class,
@@ -403,16 +447,16 @@ create_icon_helper (GtkCellRendererPixbuf *cellpixbuf,
}
static void
-gtk_cell_renderer_pixbuf_get_size (GtkCellRenderer *cell,
- GtkWidget *widget,
- const GdkRectangle *cell_area,
- int *x_offset,
- int *y_offset,
- int *width,
- int *height)
+gtk_cell_renderer_pixbuf_get_size (GtkCellRendererPixbuf *self,
+ GtkWidget *widget,
+ const GdkRectangle *cell_area,
+ int *x_offset,
+ int *y_offset,
+ int *width,
+ int *height)
{
- GtkCellRendererPixbuf *cellpixbuf = GTK_CELL_RENDERER_PIXBUF (cell);
- GtkCellRendererPixbufPrivate *priv = gtk_cell_renderer_pixbuf_get_instance_private (cellpixbuf);
+ GtkCellRendererPixbufPrivate *priv = gtk_cell_renderer_pixbuf_get_instance_private (self);
+ GtkCellRenderer *cell = GTK_CELL_RENDERER (self);
int pixbuf_width;
int pixbuf_height;
int calc_width;
@@ -425,7 +469,7 @@ gtk_cell_renderer_pixbuf_get_size (GtkCellRenderer *cell,
gtk_style_context_save (context);
gtk_style_context_add_class (context, "image");
gtk_icon_size_set_style_classes (gtk_style_context_get_node (context), priv->icon_size);
- icon_helper = create_icon_helper (cellpixbuf, widget);
+ icon_helper = create_icon_helper (self, widget);
if (_gtk_icon_helper_get_is_empty (icon_helper))
pixbuf_width = pixbuf_height = 0;
@@ -505,7 +549,8 @@ gtk_cell_renderer_pixbuf_snapshot (GtkCellRenderer *cell,
int xpad, ypad;
GtkIconHelper *icon_helper;
- gtk_cell_renderer_pixbuf_get_size (cell, widget, (GdkRectangle *) cell_area,
+ gtk_cell_renderer_pixbuf_get_size (cellpixbuf, widget,
+ cell_area,
&pix_rect.x,
&pix_rect.y,
&pix_rect.width,