[gnome-builder] panel-gtk: bring in recent panel-gtk changes
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] panel-gtk: bring in recent panel-gtk changes
- Date: Tue, 19 Apr 2016 02:02:09 +0000 (UTC)
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]