summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2018-08-18 15:54:08 +0200
committerTimm Bäder <mail@baedert.org>2018-11-09 09:52:09 +0100
commit855b2ddc76bd8267f4142d424d0887f53e9d42cf (patch)
treeb342b00edd835b8dd3d1fd4fb0455aa55c628ff8
parentd96ea469b06c5797bd76872ac715ce3d30005731 (diff)
downloadgtk+-855b2ddc76bd8267f4142d424d0887f53e9d42cf.tar.gz
widget: Save baseline without CSS values applies
This is in line with the other values, i.e. we save the size including all CSS values and subtract those when getting the allocation, size, etc.
-rw-r--r--gtk/gtkwidget.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 766d07ea4e..d33564e9ed 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -662,9 +662,6 @@ static GtkSizeRequestMode gtk_widget_real_get_request_mode (GtkWidget
static void gtk_widget_queue_tooltip_query (GtkWidget *widget);
-static void gtk_widget_adjust_baseline_allocation (GtkWidget *widget,
- gint *baseline);
-
static void template_data_free (GtkWidgetTemplate*template_data);
static void gtk_widget_set_usize_internal (GtkWidget *widget,
@@ -4263,10 +4260,7 @@ gtk_widget_size_allocate_transformed (GtkWidget *widget,
&GRAPHENE_POINT3D_INIT (allocated_offset_x, allocated_offset_y, 0));
if (baseline >= 0)
- {
- gtk_widget_adjust_baseline_allocation (widget, &baseline);
- baseline -= margin.top + border.top + padding.top;
- }
+ baseline -= priv->margin.top;
if (adjusted_width < 0 || adjusted_height < 0)
{
@@ -4324,6 +4318,9 @@ gtk_widget_size_allocate_transformed (GtkWidget *widget,
adjusted_height -= margin.top + border.top + padding.top +
margin.bottom + border.bottom + padding.bottom;
+ if (baseline >= 0)
+ baseline -= margin.top + border.top + padding.top;
+
if (g_signal_has_handler_pending (widget, widget_signals[SIZE_ALLOCATE], 0, FALSE))
g_signal_emit (widget, widget_signals[SIZE_ALLOCATE], 0,
adjusted_width,
@@ -4617,15 +4614,6 @@ gtk_widget_real_size_allocate (GtkWidget *widget,
}
}
-static void
-gtk_widget_adjust_baseline_allocation (GtkWidget *widget,
- gint *baseline)
-{
- GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
- *baseline -= priv->margin.top;
-}
-
static gboolean
gtk_widget_real_can_activate_accel (GtkWidget *widget,
guint signal_id)
@@ -11489,10 +11477,20 @@ int
gtk_widget_get_allocated_baseline (GtkWidget *widget)
{
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+ GtkCssStyle *style;
+ GtkBorder margin, border, padding;
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
- return priv->allocated_baseline;
+ if (priv->allocated_baseline == -1)
+ return -1;
+
+ style = gtk_css_node_get_style (priv->cssnode);
+ get_box_margin (style, &margin);
+ get_box_border (style, &border);
+ get_box_padding (style, &padding);
+
+ return priv->allocated_baseline - margin.top - border.top - padding.top;
}
/**