[gtk+] paned: Convert to gadgets



commit c2fc1cff32ba13c2f9f3e8b50df7d7ea0ddfbd0b
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Dec 9 00:17:51 2015 -0500

    paned: Convert to gadgets

 gtk/gtkpaned.c                           |  423 +++++++++++++++++++++---------
 gtk/theme/Adwaita/_common.scss           |   15 +-
 gtk/theme/Adwaita/gtk-contained-dark.css |   15 +-
 gtk/theme/Adwaita/gtk-contained.css      |   15 +-
 4 files changed, 308 insertions(+), 160 deletions(-)
---
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index f7c8da8..950824b 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -36,10 +36,15 @@
 #include "gtkprivate.h"
 #include "gtkintl.h"
 #include "gtkwidgetprivate.h"
+#include "gtkcontainerprivate.h"
 #include "a11y/gtkpanedaccessible.h"
+#include "gtkcsscustomgadgetprivate.h"
 #include "gtkcssnodeprivate.h"
-#include "gtkcssstylepropertyprivate.h"
 #include "gtkstylecontextprivate.h"
+#include "gtkcssstylepropertyprivate.h"
+#include "gtkcssnumbervalueprivate.h"
+
+#include <math.h>
 
 /**
  * SECTION:gtkpaned
@@ -125,7 +130,9 @@ struct _GtkPanedPrivate
 
   GdkRectangle   handle_pos;
   GdkWindow     *handle;
-  GtkCssNode    *handle_node;
+
+  GtkCssGadget  *gadget;
+  GtkCssGadget  *handle_gadget;
 
   GtkGesture    *pan_gesture;
 
@@ -419,7 +426,7 @@ gtk_paned_class_init (GtkPanedClass *class)
                                                             0,
                                                             G_MAXINT,
                                                             5,
-                                                            GTK_PARAM_READABLE));
+                                                            GTK_PARAM_READABLE|G_PARAM_DEPRECATED));
 
   /**
    * GtkPaned:resize:
@@ -695,7 +702,11 @@ initiates_touch_drag (GtkPaned *paned,
 
 #define TOUCH_EXTRA_AREA_WIDTH 50
   gtk_widget_get_allocation (GTK_WIDGET (paned), &allocation);
-  gtk_widget_style_get (GTK_WIDGET (paned), "handle-size", &handle_size, NULL);
+  gtk_css_gadget_get_preferred_size (priv->handle_gadget,
+                                     priv->orientation,
+                                     -1,
+                                     NULL, &handle_size,
+                                     NULL, NULL);
 
   if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
     {
@@ -785,79 +796,6 @@ pan_gesture_drag_end_cb (GtkGestureDrag *gesture,
 }
 
 static void
-node_style_changed_cb (GtkCssNode        *node,
-                       GtkCssStyleChange *change,
-                       GtkWidget         *widget)
-{
-  if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_CLIP))
-    gtk_widget_queue_resize (widget);
-  else
-    gtk_widget_queue_draw (widget);
-}
-
-static void
-gtk_paned_init (GtkPaned *paned)
-{
-  GtkPanedPrivate *priv;
-  GtkGesture *gesture;
-  GtkCssNode *widget_node;
-
-  gtk_widget_set_has_window (GTK_WIDGET (paned), FALSE);
-  gtk_widget_set_can_focus (GTK_WIDGET (paned), TRUE);
-
-  /* We only need to redraw when the handle position moves, which is
-   * independent of the overall allocation of the GtkPaned
-   */
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (paned), FALSE);
-
-  paned->priv = gtk_paned_get_instance_private (paned);
-  priv = paned->priv;
-
-  priv->orientation = GTK_ORIENTATION_HORIZONTAL;
-
-  priv->child1 = NULL;
-  priv->child2 = NULL;
-  priv->handle = NULL;
-
-  priv->handle_pos.width = 5;
-  priv->handle_pos.height = 5;
-  priv->position_set = FALSE;
-  priv->last_allocation = -1;
-
-  priv->last_child1_focus = NULL;
-  priv->last_child2_focus = NULL;
-  priv->in_recursion = FALSE;
-  priv->handle_prelit = FALSE;
-  priv->original_position = -1;
-
-  priv->handle_pos.x = -1;
-  priv->handle_pos.y = -1;
-
-  _gtk_orientable_set_style_classes (GTK_ORIENTABLE (paned));
-
-  gesture = gtk_gesture_pan_new (GTK_WIDGET (paned),
-                                 GTK_ORIENTATION_HORIZONTAL);
-  gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), FALSE);
-  g_signal_connect (gesture, "drag-begin",
-                    G_CALLBACK (pan_gesture_drag_begin_cb), paned);
-  g_signal_connect (gesture, "pan",
-                    G_CALLBACK (pan_gesture_pan_cb), paned);
-  g_signal_connect (gesture, "drag-end",
-                    G_CALLBACK (pan_gesture_drag_end_cb), paned);
-  gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture),
-                                              GTK_PHASE_CAPTURE);
-  priv->pan_gesture = gesture;
-
-  widget_node = gtk_widget_get_css_node (GTK_WIDGET (paned));
-  priv->handle_node = gtk_css_node_new ();
-  gtk_css_node_set_name (priv->handle_node, I_("separator"));
-  gtk_css_node_set_parent (priv->handle_node, widget_node);
-  gtk_css_node_set_state (priv->handle_node, gtk_css_node_get_state (widget_node));
-  g_signal_connect_object (priv->handle_node, "style-changed", G_CALLBACK (node_style_changed_cb), paned, 0);
-  g_object_unref (priv->handle_node);
-}
-
-static void
 gtk_paned_set_property (GObject        *object,
                        guint           prop_id,
                        const GValue   *value,
@@ -1033,6 +971,9 @@ gtk_paned_finalize (GObject *object)
 
   g_clear_object (&paned->priv->pan_gesture);
 
+  g_clear_object (&paned->priv->handle_gadget);
+  g_clear_object (&paned->priv->gadget);
+
   G_OBJECT_CLASS (gtk_paned_parent_class)->finalize (object);
 }
 
@@ -1130,7 +1071,11 @@ gtk_paned_get_preferred_size_for_orientation (GtkWidget      *widget,
     {
       gint handle_size;
 
-      gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
+      gtk_css_gadget_get_preferred_size (priv->handle_gadget,
+                                         priv->orientation,
+                                         -1,
+                                         NULL, &handle_size,
+                                         NULL, NULL);
 
       *minimum += handle_size;
       *natural += handle_size;
@@ -1155,7 +1100,11 @@ gtk_paned_get_preferred_size_for_opposite_orientation (GtkWidget      *widget,
       gint child1_req, child2_req;
       gint handle_size;
 
-      gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
+      gtk_css_gadget_get_preferred_size (priv->handle_gadget,
+                                         OPPOSITE_ORIENTATION (priv->orientation),
+                                         -1,
+                                         NULL, &handle_size,
+                                         NULL, NULL);
 
       _gtk_widget_get_preferred_size_for_size (priv->child1, priv->orientation, -1, &child1_req, NULL, NULL, 
NULL);
       _gtk_widget_get_preferred_size_for_size (priv->child2, priv->orientation, -1, &child2_req, NULL, NULL, 
NULL);
@@ -1199,13 +1148,72 @@ gtk_paned_get_preferred_size_for_opposite_orientation (GtkWidget      *widget,
     }
 }
 
-static void
-gtk_paned_get_preferred_size (GtkWidget      *widget,
-                              GtkOrientation  orientation,
-                              gint            size,
-                              gint           *minimum,
-                              gint           *natural)
+static gint
+get_number (GtkCssStyle *style,
+            guint        property)
 {
+  double d = _gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100.0);
+
+  if (d < 1)
+    return ceil (d);
+  else
+    return floor (d);
+}
+
+static void
+gtk_paned_measure_handle (GtkCssGadget   *gadget,
+                          GtkOrientation  orientation,
+                          int             size,
+                          int            *minimum,
+                          int            *natural,
+                          int            *minimum_baseline,
+                          int            *natural_baseline,
+                          gpointer        data)
+{
+  GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
+  GtkPaned *paned = GTK_PANED (widget);
+  GtkPanedPrivate *priv = paned->priv;
+  GtkStyleContext *context;
+  gint handle_size;
+  GtkCssStyle *style;
+  gint min_size;
+
+  style = gtk_css_gadget_get_style (gadget);
+  if (orientation == priv->orientation)
+    {
+      if (orientation == GTK_ORIENTATION_HORIZONTAL)
+        min_size = get_number (style, GTK_CSS_PROPERTY_MIN_WIDTH);
+      else
+        min_size = get_number (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
+
+      if (min_size != 0)
+        *minimum = *natural = min_size;
+      else
+        {
+          context = gtk_widget_get_style_context (widget);
+          gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (gadget));
+          gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
+          gtk_style_context_restore (context);
+          *minimum = *natural = handle_size;
+        }
+    }
+  else if (orientation == GTK_ORIENTATION_HORIZONTAL)
+    *minimum = *natural = gtk_widget_get_allocated_width (widget);
+  else
+    *minimum = *natural = gtk_widget_get_allocated_height(widget);
+}
+
+static void
+gtk_paned_measure (GtkCssGadget   *gadget,
+                   GtkOrientation  orientation,
+                   int             size,
+                   int            *minimum,
+                   int            *natural,
+                   int            *minimum_baseline,
+                   int            *natural_baseline,
+                   gpointer        data)
+{
+  GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
   GtkPaned *paned = GTK_PANED (widget);
   GtkPanedPrivate *priv = paned->priv;
 
@@ -1220,7 +1228,11 @@ gtk_paned_get_preferred_width (GtkWidget *widget,
                                gint      *minimum,
                                gint      *natural)
 {
-  gtk_paned_get_preferred_size (widget, GTK_ORIENTATION_HORIZONTAL, -1, minimum, natural);
+  gtk_css_gadget_get_preferred_size (GTK_PANED (widget)->priv->gadget,
+                                     GTK_ORIENTATION_HORIZONTAL,
+                                     -1,
+                                     minimum, natural,
+                                     NULL, NULL);
 }
 
 static void
@@ -1228,7 +1240,11 @@ gtk_paned_get_preferred_height (GtkWidget *widget,
                                 gint      *minimum,
                                 gint      *natural)
 {
-  gtk_paned_get_preferred_size (widget, GTK_ORIENTATION_VERTICAL, -1, minimum, natural);
+  gtk_css_gadget_get_preferred_size (GTK_PANED (widget)->priv->gadget,
+                                     GTK_ORIENTATION_VERTICAL,
+                                     -1,
+                                     minimum, natural,
+                                     NULL, NULL);
 }
 
 static void
@@ -1237,7 +1253,11 @@ gtk_paned_get_preferred_width_for_height (GtkWidget *widget,
                                           gint      *minimum,
                                           gint      *natural)
 {
-  gtk_paned_get_preferred_size (widget, GTK_ORIENTATION_HORIZONTAL, height, minimum, natural);
+  gtk_css_gadget_get_preferred_size (GTK_PANED (widget)->priv->gadget,
+                                     GTK_ORIENTATION_HORIZONTAL,
+                                     height,
+                                     minimum, natural,
+                                     NULL, NULL);
 }
 
 static void
@@ -1246,7 +1266,11 @@ gtk_paned_get_preferred_height_for_width (GtkWidget *widget,
                                           gint      *minimum,
                                           gint      *natural)
 {
-  gtk_paned_get_preferred_size (widget, GTK_ORIENTATION_VERTICAL, width, minimum, natural);
+  gtk_css_gadget_get_preferred_size (GTK_PANED (widget)->priv->gadget,
+                                     GTK_ORIENTATION_VERTICAL,
+                                     width,
+                                     minimum, natural,
+                                     NULL, NULL);
 }
 
 static void
@@ -1312,9 +1336,30 @@ gtk_paned_size_allocate (GtkWidget     *widget,
 {
   GtkPaned *paned = GTK_PANED (widget);
   GtkPanedPrivate *priv = paned->priv;
+  GtkAllocation clip;
 
   gtk_widget_set_allocation (widget, allocation);
 
+  gtk_css_gadget_allocate (priv->gadget,
+                           allocation,
+                           gtk_widget_get_allocated_baseline (widget),
+                           &clip);
+
+  gtk_widget_set_clip (widget, &clip);
+}
+
+static void
+gtk_paned_allocate (GtkCssGadget        *gadget,
+                    const GtkAllocation *allocation,
+                    int                  baseline,
+                    GtkAllocation       *out_clip,
+                    gpointer             data)
+{
+  GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
+  GtkPaned *paned = GTK_PANED (widget);
+  GtkPanedPrivate *priv = paned->priv;
+  GtkAllocation clip;
+
   if (priv->child1 && gtk_widget_get_visible (priv->child1) &&
       priv->child2 && gtk_widget_get_visible (priv->child2))
     {
@@ -1324,7 +1369,11 @@ gtk_paned_size_allocate (GtkWidget     *widget,
       GdkRectangle old_handle_pos;
       gint handle_size;
 
-      gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
+      gtk_css_gadget_get_preferred_size (priv->handle_gadget,
+                                         priv->orientation,
+                                         -1,
+                                         NULL, &handle_size,
+                                         NULL, NULL);
 
       old_handle_pos = priv->handle_pos;
 
@@ -1429,6 +1478,12 @@ gtk_paned_size_allocate (GtkWidget     *widget,
             child2_allocation.height = child2_height;
         }
 
+
+      gtk_css_gadget_allocate (priv->handle_gadget,
+                               &priv->handle_pos,
+                               -1,
+                               &clip);
+
       if (gtk_widget_get_mapped (widget) &&
           (old_handle_pos.x != priv->handle_pos.x ||
            old_handle_pos.y != priv->handle_pos.y ||
@@ -1545,6 +1600,9 @@ gtk_paned_size_allocate (GtkWidget     *widget,
           gtk_paned_set_child_visible (paned, CHILD2, FALSE);
         }
     }
+
+  gtk_container_get_children_clip (GTK_CONTAINER (paned), out_clip);
+  gdk_rectangle_union (out_clip, &clip, out_clip);
 }
 
 static GdkWindow *
@@ -1566,7 +1624,11 @@ gtk_paned_create_child_window (GtkPaned  *paned,
       GtkAllocation allocation;
       int handle_size;
 
-      gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
+      gtk_css_gadget_get_preferred_size (priv->handle_gadget,
+                                         priv->orientation,
+                                         -1,
+                                         NULL, &handle_size,
+                                         NULL, NULL);
 
       gtk_widget_get_allocation (widget, &allocation);
       if (priv->orientation == GTK_ORIENTATION_HORIZONTAL &&
@@ -1721,15 +1783,24 @@ static gboolean
 gtk_paned_draw (GtkWidget *widget,
                 cairo_t   *cr)
 {
+  gtk_css_gadget_draw (GTK_PANED (widget)->priv->gadget, cr);
+
+  return FALSE;
+}
+
+static gboolean
+gtk_paned_render (GtkCssGadget *gadget,
+                  cairo_t      *cr,
+                  int           x,
+                  int           y,
+                  int           width,
+                  int           height,
+                  gpointer      data)
+{
+  GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
   GtkPaned *paned = GTK_PANED (widget);
   GtkPanedPrivate *priv = paned->priv;
   GtkStyleContext *context = gtk_widget_get_style_context (widget);
-  GtkAllocation allocation;
-
-  gtk_widget_get_allocation (widget, &allocation);
-  gtk_render_background (context, cr,
-                         0, 0,
-                         allocation.width, allocation.height);
 
   if (gtk_cairo_should_draw_window (cr, priv->child1_window))
     {
@@ -1759,22 +1830,127 @@ gtk_paned_draw (GtkWidget *widget,
       priv->child1 && gtk_widget_get_visible (priv->child1) &&
       priv->child2 && gtk_widget_get_visible (priv->child2))
     {
-      gtk_style_context_save_to_node (context, priv->handle_node);
-      gtk_render_handle (context, cr,
-                         priv->handle_pos.x - allocation.x,
-                         priv->handle_pos.y - allocation.y,
-                         priv->handle_pos.width,
-                         priv->handle_pos.height);
-      gtk_style_context_restore (context);
+      gtk_css_gadget_draw (priv->handle_gadget, cr);
     }
 
   /* Chain up to draw children */
   GTK_WIDGET_CLASS (gtk_paned_parent_class)->draw (widget, cr);
-  
+
   return FALSE;
 }
 
 static gboolean
+gtk_paned_render_handle (GtkCssGadget *gadget,
+                         cairo_t      *cr,
+                         int           x,
+                         int           y,
+                         int           width,
+                         int           height,
+                         gpointer      data)
+{
+  GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
+  GtkPaned *paned = GTK_PANED (widget);
+  GtkPanedPrivate *priv = paned->priv;
+  GtkStyleContext *context = gtk_widget_get_style_context (widget);
+
+  gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (priv->handle_gadget));
+  gtk_render_handle (context, cr, x, y, width, height);
+  gtk_style_context_restore (context);
+
+  return FALSE;
+}
+
+static void
+update_node_state (GtkWidget *widget)
+{
+  GtkPaned *paned = GTK_PANED (widget);
+  GtkPanedPrivate *priv = paned->priv;
+  GtkStateFlags state;
+
+  state = gtk_widget_get_state_flags (widget);
+
+  if (gtk_widget_is_focus (widget))
+    state |= GTK_STATE_FLAG_SELECTED;
+  if (priv->handle_prelit)
+    state |= GTK_STATE_FLAG_PRELIGHT;
+
+  gtk_css_node_set_state (gtk_css_gadget_get_node (priv->handle_gadget), state);
+}
+
+static void
+gtk_paned_init (GtkPaned *paned)
+{
+  GtkPanedPrivate *priv;
+  GtkGesture *gesture;
+  GtkCssNode *widget_node;
+
+  gtk_widget_set_has_window (GTK_WIDGET (paned), FALSE);
+  gtk_widget_set_can_focus (GTK_WIDGET (paned), TRUE);
+
+  /* We only need to redraw when the handle position moves, which is
+   * independent of the overall allocation of the GtkPaned
+   */
+  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (paned), FALSE);
+
+  paned->priv = gtk_paned_get_instance_private (paned);
+  priv = paned->priv;
+
+  priv->orientation = GTK_ORIENTATION_HORIZONTAL;
+
+  priv->child1 = NULL;
+  priv->child2 = NULL;
+  priv->handle = NULL;
+
+  priv->handle_pos.width = 5;
+  priv->handle_pos.height = 5;
+  priv->position_set = FALSE;
+  priv->last_allocation = -1;
+
+  priv->last_child1_focus = NULL;
+  priv->last_child2_focus = NULL;
+  priv->in_recursion = FALSE;
+  priv->handle_prelit = FALSE;
+  priv->original_position = -1;
+
+  priv->handle_pos.x = -1;
+  priv->handle_pos.y = -1;
+
+  _gtk_orientable_set_style_classes (GTK_ORIENTABLE (paned));
+
+  gesture = gtk_gesture_pan_new (GTK_WIDGET (paned),
+                                 GTK_ORIENTATION_HORIZONTAL);
+  gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), FALSE);
+  g_signal_connect (gesture, "drag-begin",
+                    G_CALLBACK (pan_gesture_drag_begin_cb), paned);
+  g_signal_connect (gesture, "pan",
+                    G_CALLBACK (pan_gesture_pan_cb), paned);
+  g_signal_connect (gesture, "drag-end",
+                    G_CALLBACK (pan_gesture_drag_end_cb), paned);
+  gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture),
+                                              GTK_PHASE_CAPTURE);
+  priv->pan_gesture = gesture;
+
+  widget_node = gtk_widget_get_css_node (GTK_WIDGET (paned));
+  priv->gadget = gtk_css_custom_gadget_new_for_node (widget_node,
+                                                     GTK_WIDGET (paned),
+                                                     gtk_paned_measure,
+                                                     gtk_paned_allocate,
+                                                     gtk_paned_render,
+                                                     NULL,
+                                                     NULL);
+  priv->handle_gadget = gtk_css_custom_gadget_new ("separator",
+                                                   GTK_WIDGET (paned),
+                                                   priv->gadget,
+                                                   NULL,
+                                                   gtk_paned_measure_handle,
+                                                   NULL,
+                                                   gtk_paned_render_handle,
+                                                   NULL,
+                                                   NULL);
+  update_node_state (GTK_WIDGET (paned));
+}
+
+static gboolean
 is_rtl (GtkPaned *paned)
 {
   GtkPanedPrivate *priv = paned->priv;
@@ -1812,9 +1988,11 @@ update_drag (GtkPaned *paned,
 
   if (is_rtl (paned))
     {
-      gtk_widget_style_get (widget,
-                           "handle-size", &handle_size,
-                           NULL);
+      gtk_css_gadget_get_preferred_size (priv->handle_gadget,
+                                         GTK_ORIENTATION_HORIZONTAL,
+                                         -1,
+                                         NULL, &handle_size,
+                                         NULL, NULL);
 
       size = allocation.width - pos - handle_size;
     }
@@ -1829,23 +2007,6 @@ update_drag (GtkPaned *paned,
     gtk_paned_set_position (paned, size);
 }
 
-static void
-update_node_state (GtkWidget *widget)
-{
-  GtkPaned *paned = GTK_PANED (widget);
-  GtkPanedPrivate *priv = paned->priv;
-  GtkStateFlags state;
-
-  state = gtk_widget_get_state_flags (widget);
-
-  if (gtk_widget_is_focus (widget))
-    state |= GTK_STATE_FLAG_SELECTED;
-  if (priv->handle_prelit)
-    state |= GTK_STATE_FLAG_PRELIGHT;
-
-  gtk_css_node_set_state (priv->handle_node, state);
-}
-
 static gboolean
 gtk_paned_enter (GtkWidget        *widget,
                 GdkEventCrossing *event)
@@ -1930,6 +2091,8 @@ gtk_paned_state_flags_changed (GtkWidget     *widget,
     }
 
   update_node_state (widget);
+
+  GTK_WIDGET_CLASS (gtk_paned_parent_class)->state_flags_changed (widget, previous_state);
 }
 
 /**
@@ -2014,7 +2177,7 @@ gtk_paned_pack1 (GtkPaned  *paned,
 
       widget_node = gtk_widget_get_css_node (GTK_WIDGET (paned));
       child_node = gtk_widget_get_css_node (child);
-      gtk_css_node_insert_before (widget_node, child_node, priv->handle_node);
+      gtk_css_node_insert_before (widget_node, child_node, gtk_css_gadget_get_node (priv->handle_gadget));
 
       gtk_widget_set_parent_window (child, priv->child1_window);
       gtk_widget_set_parent (child, GTK_WIDGET (paned));
@@ -2053,7 +2216,7 @@ gtk_paned_pack2 (GtkPaned  *paned,
 
       widget_node = gtk_widget_get_css_node (GTK_WIDGET (paned));
       child_node = gtk_widget_get_css_node (child);
-      gtk_css_node_insert_after (widget_node, child_node, priv->handle_node);
+      gtk_css_node_insert_after (widget_node, child_node, gtk_css_gadget_get_node (priv->handle_gadget));
 
       gtk_widget_set_parent_window (child, priv->child2_window);
       gtk_widget_set_parent (child, GTK_WIDGET (paned));
@@ -2934,9 +3097,9 @@ gtk_paned_set_wide_handle (GtkPaned *paned,
   if (old_wide != wide)
     {
       if (wide)
-        gtk_css_node_add_class (paned->priv->handle_node, g_quark_from_static_string (GTK_STYLE_CLASS_WIDE));
+        gtk_css_gadget_add_class (paned->priv->handle_gadget, GTK_STYLE_CLASS_WIDE);
       else
-        gtk_css_node_remove_class (paned->priv->handle_node, g_quark_from_static_string 
(GTK_STYLE_CLASS_WIDE));
+        gtk_css_gadget_remove_class (paned->priv->handle_gadget, GTK_STYLE_CLASS_WIDE);
 
       gtk_widget_queue_resize (GTK_WIDGET (paned));
       g_object_notify (G_OBJECT (paned), "wide-handle");
@@ -2958,7 +3121,7 @@ gtk_paned_get_wide_handle (GtkPaned *paned)
 {
   g_return_val_if_fail (GTK_IS_PANED (paned), FALSE);
 
-  if (gtk_css_node_has_class (paned->priv->handle_node, g_quark_from_static_string (GTK_STYLE_CLASS_WIDE)))
+  if (gtk_css_node_has_class (gtk_css_gadget_get_node (paned->priv->handle_gadget), 
g_quark_from_static_string (GTK_STYLE_CLASS_WIDE)))
     return TRUE;
   else
     return FALSE;
diff --git a/gtk/theme/Adwaita/_common.scss b/gtk/theme/Adwaita/_common.scss
index b1dacb9..2ed068d 100644
--- a/gtk/theme/Adwaita/_common.scss
+++ b/gtk/theme/Adwaita/_common.scss
@@ -2950,8 +2950,6 @@ placesview {
 
 paned { // this is for the standard paned separator
 
-  -GtkPaned-handle-size: 1; // sets separator width
-
   -gtk-icon-source: none; // removes handle decoration
   margin: 0 8px 8px 0; // drag area of the separator, not a real margin
   &:dir(rtl) {
@@ -2959,6 +2957,8 @@ paned { // this is for the standard paned separator
     margin-left: 8px;
   }
   separator {
+    min-width: 1px;
+    min-height: 1px;
     background-color: $borders_color;
     &:backdrop {
       background-color: $backdrop_borders_color;
@@ -2967,19 +2967,14 @@ paned { // this is for the standard paned separator
   separator:selected {
     background-color: $selected_bg_color;
   }
-}
-
-paned.wide { // this is for the paned with wide separator
-  -GtkPaned-handle-size: 5; // wider separator here
-  margin: 0; // no need of the invisible drag area so, reset margin
-  separator {
+  separator.wide {
+    min-width: 5px;
+    min-height: 5px;
     background-color: transparent;
     border-style: none solid;
     border-color: $borders_color;
     border-width: 1px;
   }
-  &.vertical separator { border-style: solid none;}
-  separator:backdrop { border-color: $backdrop_borders_color; }
 }
 
 
diff --git a/gtk/theme/Adwaita/gtk-contained-dark.css b/gtk/theme/Adwaita/gtk-contained-dark.css
index 36165e5..6d8c89d 100644
--- a/gtk/theme/Adwaita/gtk-contained-dark.css
+++ b/gtk/theme/Adwaita/gtk-contained-dark.css
@@ -4112,31 +4112,26 @@ placesview row.activatable:hover {
  * Paned *
  *********/
 paned {
-  -GtkPaned-handle-size: 1;
   -gtk-icon-source: none;
   margin: 0 8px 8px 0; }
   paned:dir(rtl) {
     margin-right: 0;
     margin-left: 8px; }
   paned separator {
+    min-width: 1px;
+    min-height: 1px;
     background-color: #1c1f1f; }
     paned separator:backdrop {
       background-color: #1f2222; }
   paned separator:selected {
     background-color: #215d9c; }
-
-paned.wide {
-  -GtkPaned-handle-size: 5;
-  margin: 0; }
-  paned.wide separator {
+  paned separator.wide {
+    min-width: 5px;
+    min-height: 5px;
     background-color: transparent;
     border-style: none solid;
     border-color: #1c1f1f;
     border-width: 1px; }
-  paned.wide.vertical separator {
-    border-style: solid none; }
-  paned.wide separator:backdrop {
-    border-color: #1f2222; }
 
 /**************
  * GtkInfoBar *
diff --git a/gtk/theme/Adwaita/gtk-contained.css b/gtk/theme/Adwaita/gtk-contained.css
index 2f602c1..1b4c6bc 100644
--- a/gtk/theme/Adwaita/gtk-contained.css
+++ b/gtk/theme/Adwaita/gtk-contained.css
@@ -4284,31 +4284,26 @@ placesview row.activatable:hover {
  * Paned *
  *********/
 paned {
-  -GtkPaned-handle-size: 1;
   -gtk-icon-source: none;
   margin: 0 8px 8px 0; }
   paned:dir(rtl) {
     margin-right: 0;
     margin-left: 8px; }
   paned separator {
+    min-width: 1px;
+    min-height: 1px;
     background-color: #9d9d99; }
     paned separator:backdrop {
       background-color: #a5a5a1; }
   paned separator:selected {
     background-color: #4a90d9; }
-
-paned.wide {
-  -GtkPaned-handle-size: 5;
-  margin: 0; }
-  paned.wide separator {
+  paned separator.wide {
+    min-width: 5px;
+    min-height: 5px;
     background-color: transparent;
     border-style: none solid;
     border-color: #9d9d99;
     border-width: 1px; }
-  paned.wide.vertical separator {
-    border-style: solid none; }
-  paned.wide separator:backdrop {
-    border-color: #a5a5a1; }
 
 /**************
  * GtkInfoBar *


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