summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2020-11-28 18:37:09 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2020-11-28 19:21:24 +0000
commit71a9e5d8c2013d26375f029c37f871895f482a12 (patch)
treec4000c7d3ea757b902583a5e2adddcae67d2418b
parenta605fcc2bde2c1f124ad34308d7c359cd73ce30c (diff)
downloadgtk+-71a9e5d8c2013d26375f029c37f871895f482a12.tar.gz
Port GtkCellRendererToggle to preferred size vfuncs
Drop the use of GtkCellRendererClass.get_size()
-rw-r--r--gtk/gtkcellrenderertoggle.c75
1 files changed, 61 insertions, 14 deletions
diff --git a/gtk/gtkcellrenderertoggle.c b/gtk/gtkcellrenderertoggle.c
index 580a4e6080..1d86021980 100644
--- a/gtk/gtkcellrenderertoggle.c
+++ b/gtk/gtkcellrenderertoggle.c
@@ -51,7 +51,7 @@ static void gtk_cell_renderer_toggle_set_property (GObject *
guint param_id,
const GValue *value,
GParamSpec *pspec);
-static void gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
+static void gtk_cell_renderer_toggle_get_size (GtkCellRendererToggle *self,
GtkWidget *widget,
const GdkRectangle *cell_area,
int *x_offset,
@@ -146,6 +146,48 @@ gtk_cell_renderer_toggle_dispose (GObject *object)
G_OBJECT_CLASS (gtk_cell_renderer_toggle_parent_class)->dispose (object);
}
+static GtkSizeRequestMode
+gtk_cell_renderer_toggle_get_request_mode (GtkCellRenderer *cell)
+{
+ return GTK_SIZE_REQUEST_CONSTANT_SIZE;
+}
+
+static void
+gtk_cell_renderer_toggle_get_preferred_width (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ int *minimum,
+ int *natural)
+{
+ int width = 0;
+
+ gtk_cell_renderer_toggle_get_size (GTK_CELL_RENDERER_TOGGLE (cell), widget,
+ NULL,
+ NULL, NULL, &width, NULL);
+
+ if (minimum)
+ *minimum = width;
+ if (natural)
+ *natural = width;
+}
+
+static void
+gtk_cell_renderer_toggle_get_preferred_height (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ int *minimum,
+ int *natural)
+{
+ int height = 0;
+
+ gtk_cell_renderer_toggle_get_size (GTK_CELL_RENDERER_TOGGLE (cell), widget,
+ NULL,
+ NULL, NULL, NULL, &height);
+
+ if (minimum)
+ *minimum = height;
+ if (natural)
+ *natural = height;
+}
+
static void
gtk_cell_renderer_toggle_class_init (GtkCellRendererToggleClass *class)
{
@@ -156,7 +198,9 @@ gtk_cell_renderer_toggle_class_init (GtkCellRendererToggleClass *class)
object_class->set_property = gtk_cell_renderer_toggle_set_property;
object_class->dispose = gtk_cell_renderer_toggle_dispose;
- cell_class->get_size = gtk_cell_renderer_toggle_get_size;
+ cell_class->get_request_mode = gtk_cell_renderer_toggle_get_request_mode;
+ cell_class->get_preferred_width = gtk_cell_renderer_toggle_get_preferred_width;
+ cell_class->get_preferred_height = gtk_cell_renderer_toggle_get_preferred_height;
cell_class->snapshot = gtk_cell_renderer_toggle_snapshot;
cell_class->activate = gtk_cell_renderer_toggle_activate;
@@ -345,14 +389,15 @@ calc_indicator_size (GtkStyleContext *context)
}
static void
-gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
- GtkWidget *widget,
- const GdkRectangle *cell_area,
- int *x_offset,
- int *y_offset,
- int *width,
- int *height)
+gtk_cell_renderer_toggle_get_size (GtkCellRendererToggle *self,
+ GtkWidget *widget,
+ const GdkRectangle *cell_area,
+ int *x_offset,
+ int *y_offset,
+ int *width,
+ int *height)
{
+ GtkCellRenderer *cell = GTK_CELL_RENDERER (self);
int calc_width;
int calc_height;
int xpad, ypad;
@@ -361,7 +406,7 @@ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
gtk_cell_renderer_get_padding (cell, &xpad, &ypad);
- context = gtk_cell_renderer_toggle_save_context (GTK_CELL_RENDERER_TOGGLE (cell), widget);
+ context = gtk_cell_renderer_toggle_save_context (self, widget);
gtk_style_context_get_padding (context, &padding);
gtk_style_context_get_border (context, &border);
@@ -369,7 +414,7 @@ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
calc_width += xpad * 2 + padding.left + padding.right + border.left + border.right;
calc_height += ypad * 2 + padding.top + padding.bottom + border.top + border.bottom;
- gtk_cell_renderer_toggle_restore_context (GTK_CELL_RENDERER_TOGGLE (cell), context);
+ gtk_cell_renderer_toggle_restore_context (self, context);
if (width)
*width = calc_width;
@@ -397,8 +442,10 @@ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
}
else
{
- if (x_offset) *x_offset = 0;
- if (y_offset) *y_offset = 0;
+ if (x_offset)
+ *x_offset = 0;
+ if (y_offset)
+ *y_offset = 0;
}
}
@@ -419,7 +466,7 @@ gtk_cell_renderer_toggle_snapshot (GtkCellRenderer *cell,
GtkStateFlags state;
GtkBorder padding, border;
- gtk_cell_renderer_toggle_get_size (cell, widget, cell_area,
+ gtk_cell_renderer_toggle_get_size (celltoggle, widget, cell_area,
&x_offset, &y_offset,
&width, &height);
gtk_cell_renderer_get_padding (cell, &xpad, &ypad);