[gnome-builder] panel-gtk: bring in recent panel-gtk changes



commit 23e78c483c3030927c906a12ffcd7c1c24fd1ce1
Author: Christian Hergert <christian hergert me>
Date:   Mon Apr 18 19:01:43 2016 -0700

    panel-gtk: bring in recent panel-gtk changes

 contrib/pnl/pnl-multi-paned.c |   54 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 48 insertions(+), 6 deletions(-)
---
diff --git a/contrib/pnl/pnl-multi-paned.c b/contrib/pnl/pnl-multi-paned.c
index b18ae7f..e49a911 100644
--- a/contrib/pnl/pnl-multi-paned.c
+++ b/contrib/pnl/pnl-multi-paned.c
@@ -309,7 +309,7 @@ pnl_multi_paned_create_child_handle (PnlMultiPaned      *self,
   GdkWindowAttr attributes = { 0 };
   GdkDisplay *display;
   GdkWindow *parent;
-  GdkCursorType cursor_type;
+  const char *cursor_name;
   GdkRectangle handle_rect;
 
   g_assert (PNL_IS_MULTI_PANED (self));
@@ -319,16 +319,16 @@ pnl_multi_paned_create_child_handle (PnlMultiPaned      *self,
   display = gtk_widget_get_display (GTK_WIDGET (self));
   parent = gtk_widget_get_window (GTK_WIDGET (self));
 
-  cursor_type = (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
-              ? GDK_SB_H_DOUBLE_ARROW
-              : GDK_SB_V_DOUBLE_ARROW;
+  cursor_name = (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
+                ? "col-resize"
+                : "row-resize";
 
   pnl_multi_paned_get_handle_rect (self, child, &handle_rect);
 
   attributes.window_type = GDK_WINDOW_CHILD;
   attributes.wclass = GDK_INPUT_ONLY;
   attributes.x = handle_rect.x;
-  attributes.x = -handle_rect.y;
+  attributes.y = -handle_rect.y;
   attributes.width = handle_rect.width;
   attributes.height = handle_rect.height;
   attributes.visual = gtk_widget_get_visual (GTK_WIDGET (self));
@@ -337,7 +337,7 @@ pnl_multi_paned_create_child_handle (PnlMultiPaned      *self,
                            GDK_ENTER_NOTIFY_MASK |
                            GDK_LEAVE_NOTIFY_MASK |
                            GDK_POINTER_MOTION_MASK);
-  attributes.cursor = gdk_cursor_new_for_display (display, cursor_type);
+  attributes.cursor = gdk_cursor_new_from_name (display, cursor_name);
 
   child->handle = gdk_window_new (parent, &attributes, GDK_WA_CURSOR);
   gtk_widget_register_window (GTK_WIDGET (self), child->handle);
@@ -382,6 +382,37 @@ pnl_multi_paned_destroy_child_handle (PnlMultiPaned      *self,
     }
 }
 
+static void
+pnl_multi_paned_update_child_handles (PnlMultiPaned *self)
+{
+  PnlMultiPanedPrivate *priv = pnl_multi_paned_get_instance_private (self);
+  GtkWidget *widget = GTK_WIDGET (self);
+
+  if (gtk_widget_get_realized (widget))
+    {
+      GdkCursor *cursor;
+      guint i;
+
+      if (gtk_widget_is_sensitive (widget))
+        cursor = gdk_cursor_new_from_name (gtk_widget_get_display (widget),
+                                           priv->orientation == GTK_ORIENTATION_HORIZONTAL
+                                           ? "col-resize"
+                                           : "row-resize");
+      else
+        cursor = NULL;
+
+      for (i = 0; i < priv->children->len; i++)
+        {
+          PnlMultiPanedChild *child = &g_array_index (priv->children, PnlMultiPanedChild, i);
+
+          gdk_window_set_cursor (child->handle, cursor);
+        }
+
+      if (cursor)
+        g_object_unref (cursor);
+    }
+}
+
 static PnlMultiPanedChild *
 pnl_multi_paned_get_child (PnlMultiPaned *self,
                            GtkWidget     *widget)
@@ -1744,6 +1775,7 @@ pnl_multi_paned_set_property (GObject      *object,
     {
     case PROP_ORIENTATION:
       priv->orientation = g_value_get_enum (value);
+      pnl_multi_paned_update_child_handles (self);
       gtk_widget_queue_resize (GTK_WIDGET (self));
       break;
 
@@ -1753,6 +1785,15 @@ pnl_multi_paned_set_property (GObject      *object,
 }
 
 static void
+pnl_multi_paned_state_flags_changed (GtkWidget     *widget,
+                                     GtkStateFlags  previous_state)
+{
+  pnl_multi_paned_update_child_handles (PNL_MULTI_PANED (widget));
+
+  GTK_WIDGET_CLASS (pnl_multi_paned_parent_class)->state_flags_changed (widget, previous_state);
+}
+
+static void
 pnl_multi_paned_class_init (PnlMultiPanedClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -1774,6 +1815,7 @@ pnl_multi_paned_class_init (PnlMultiPanedClass *klass)
   widget_class->map = pnl_multi_paned_map;
   widget_class->unmap = pnl_multi_paned_unmap;
   widget_class->draw = pnl_multi_paned_draw;
+  widget_class->state_flags_changed = pnl_multi_paned_state_flags_changed;
 
   container_class->add = pnl_multi_paned_add;
   container_class->remove = pnl_multi_paned_remove;


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