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.
This commit is contained in:
Timm Bäder
2018-08-18 15:54:08 +02:00
parent d96ea469b0
commit 855b2ddc76

View File

@@ -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;
}
/**