[gtk/wip/baedert/transforms5: 267/272] widget: Save baseline without CSS values applies



commit 855b2ddc76bd8267f4142d424d0887f53e9d42cf
Author: Timm Bäder <mail baedert org>
Date:   Sat Aug 18 15:54:08 2018 +0200

    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.

 gtk/gtkwidget.c | 32 +++++++++++++++-----------------
 1 file 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;
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]