[gtk/wip/carlosg/paned-cursor] paned: Set cursor on gizmo widget



commit c9839b20690049b1c02f498758adeec07123ab35
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Apr 3 13:26:40 2019 +0200

    paned: Set cursor on gizmo widget
    
    We may avoid setting it on the paned widget depending on the pointer
    position altogether, since the handle is now a widget. Also is more
    likely to be correct as the implicitly grabbed widget will probably
    be that one.
    
    Fixes the paned losing the resize cursor after button press.

 gtk/gtkpaned.c | 47 +++++++++++++----------------------------------
 1 file changed, 13 insertions(+), 34 deletions(-)
---
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index 862ab757a3..4ed06155f1 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -295,31 +295,6 @@ get_handle_area (GtkPaned        *paned,
   graphene_rect_inset (area, - extra, - extra);
 }
 
-static void
-gtk_paned_motion (GtkEventControllerMotion *motion,
-                  double                    x,
-                  double                    y,
-                  GtkPaned                 *paned)
-{
-  GtkPanedPrivate *priv = gtk_paned_get_instance_private (paned);
-  graphene_rect_t handle_area;
-
-  get_handle_area (paned, &handle_area);
-
-  if (graphene_rect_contains_point (&handle_area, &(graphene_point_t){x, y}) ||
-      priv->panning)
-    {
-      if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
-        gtk_widget_set_cursor_from_name (GTK_WIDGET (paned), "col-resize");
-      else
-        gtk_widget_set_cursor_from_name (GTK_WIDGET (paned), "row-resize");
-    }
-  else
-    {
-      gtk_widget_set_cursor (GTK_WIDGET (paned), NULL);
-    }
-}
-
 static GtkWidget *
 gtk_paned_pick (GtkWidget *widget,
                 double     x,
@@ -835,11 +810,19 @@ gtk_paned_set_property (GObject        *object,
           _gtk_orientable_set_style_classes (GTK_ORIENTABLE (paned));
 
           if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
-            gtk_gesture_pan_set_orientation (GTK_GESTURE_PAN (priv->pan_gesture),
-                                             GTK_ORIENTATION_HORIZONTAL);
+            {
+              gtk_gesture_pan_set_orientation (GTK_GESTURE_PAN (priv->pan_gesture),
+                                               GTK_ORIENTATION_HORIZONTAL);
+              gtk_widget_set_cursor_from_name (priv->handle_widget,
+                                               "col-resize");
+            }
           else
-            gtk_gesture_pan_set_orientation (GTK_GESTURE_PAN (priv->pan_gesture),
-                                             GTK_ORIENTATION_VERTICAL);
+            {
+              gtk_gesture_pan_set_orientation (GTK_GESTURE_PAN (priv->pan_gesture),
+                                               GTK_ORIENTATION_VERTICAL);
+              gtk_widget_set_cursor_from_name (priv->handle_widget,
+                                               "row-resize");
+            }
 
           gtk_widget_queue_resize (GTK_WIDGET (paned));
           g_object_notify_by_pspec (object, pspec);
@@ -1346,7 +1329,6 @@ static void
 gtk_paned_init (GtkPaned *paned)
 {
   GtkPanedPrivate *priv = gtk_paned_get_instance_private (paned);
-  GtkEventController *controller;
   GtkGesture *gesture;
 
   gtk_widget_set_has_surface (GTK_WIDGET (paned), FALSE);
@@ -1390,15 +1372,12 @@ gtk_paned_init (GtkPaned *paned)
   gtk_widget_add_controller (GTK_WIDGET (paned), GTK_EVENT_CONTROLLER (gesture));
   priv->drag_gesture = gesture;
 
-  controller = gtk_event_controller_motion_new ();
-  g_signal_connect (controller, "motion", G_CALLBACK (gtk_paned_motion), paned);
-  gtk_widget_add_controller (GTK_WIDGET (paned), controller);
-
   priv->handle_widget = gtk_gizmo_new ("separator",
                                        NULL,
                                        NULL,
                                        gtk_paned_render_handle);
   gtk_widget_set_parent (priv->handle_widget, GTK_WIDGET (paned));
+  gtk_widget_set_cursor_from_name (priv->handle_widget, "col-resize");
 }
 
 static gboolean


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