summaryrefslogtreecommitdiff
path: root/gtk/gtkswitch.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-27 22:18:20 +0200
committerMatthias Clasen <mclasen@redhat.com>2023-04-28 08:52:05 -0400
commit12af75df9baaa8fb116d2d5bbfdb7d0dd4e243f2 (patch)
tree9390a7b242d09fdeae1f71373e7334e939228350 /gtk/gtkswitch.c
parentd648a7721e826717fb2c675d8202ab34e879d521 (diff)
downloadgtk+-12af75df9baaa8fb116d2d5bbfdb7d0dd4e243f2.tar.gz
switch: Fix up baseline handling
We need to report a baseline for baseline alignment to work...
Diffstat (limited to 'gtk/gtkswitch.c')
-rw-r--r--gtk/gtkswitch.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c
index 19f62f576d..31d2d234f5 100644
--- a/gtk/gtkswitch.c
+++ b/gtk/gtkswitch.c
@@ -301,13 +301,14 @@ gtk_switch_measure (GtkWidget *widget,
GtkSwitch *self = GTK_SWITCH (widget);
int slider_minimum, slider_natural;
int on_nat, off_nat;
+ int on_baseline, off_baseline;
gtk_widget_measure (self->slider, orientation, -1,
&slider_minimum, &slider_natural,
NULL, NULL);
- gtk_widget_measure (self->on_image, orientation, for_size, NULL, &on_nat, NULL, NULL);
- gtk_widget_measure (self->off_image, orientation, for_size, NULL, &off_nat, NULL, NULL);
+ gtk_widget_measure (self->on_image, orientation, for_size, NULL, &on_nat, NULL, &on_baseline);
+ gtk_widget_measure (self->off_image, orientation, for_size, NULL, &off_nat, NULL, &off_baseline);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
@@ -318,8 +319,12 @@ gtk_switch_measure (GtkWidget *widget,
else
{
int text_height = MAX (on_nat, off_nat);
+
*minimum = MAX (slider_minimum, text_height);
*natural = MAX (slider_natural, text_height);
+
+ *minimum_baseline = MAX (on_baseline, off_baseline) + MAX ((slider_minimum - text_height) / 2, 0);
+ *natural_baseline = MAX (on_baseline, off_baseline) + MAX ((slider_natural - text_height) / 2, 0);
}
}