From f8b8c95f45156f931b134ab92546ce7fc54434ab Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 Oct 2010 09:51:54 -0400 Subject: [PATCH] Some resize grip cleanups Safe space in the private struct, always set the cursor when we update visibility, since the cursor depends on resizability conditions too. And don't set the shape needlessly. --- gtk/gtkwindow.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index cae6a8080d..2a70206539 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -115,7 +115,6 @@ struct _GtkWindowPrivate gdouble opacity; - gboolean has_resize_grip; GdkWindow *grip_window; gchar *startup_id; @@ -130,11 +129,6 @@ struct _GtkWindowPrivate guint frame_top; guint keys_changed_handler; - /* Don't use this value, it's only used for determining when - * to fire notify events on the "resize-grip-visible" property. - */ - gboolean resize_grip_visible; - guint16 configure_request_count; /* The following flags are initially TRUE (before a window is mapped). @@ -176,9 +170,17 @@ struct _GtkWindowPrivate guint stick_initially : 1; guint transient_parent_group : 1; guint type : 4; /* GtkWindowType */ - guint type_hint : 3; /* GdkWindowTypeHint if the hint is one of the original eight. If not, then - * it contains GDK_WINDOW_TYPE_HINT_NORMAL */ + guint type_hint : 3; /* GdkWindowTypeHint if the hint is + * one of the original eight. If not, + * then it contains + * GDK_WINDOW_TYPE_HINT_NORMAL + */ guint urgent : 1; + guint has_resize_grip : 1; + guint resize_grip_visible : 1; /* don't use, just for "resize- + * grip-visible" notification + */ + }; enum { @@ -5192,6 +5194,7 @@ gtk_window_size_allocate (GtkWidget *widget, gdk_window_resize (priv->frame, allocation->width + priv->frame_left + priv->frame_right, allocation->height + priv->frame_top + priv->frame_bottom); + update_grip_visibility (window); set_grip_position (window); } } @@ -5347,7 +5350,6 @@ gtk_window_state_changed (GtkWidget *widget, { GtkWindow *window = GTK_WINDOW (widget); - set_grip_cursor (window); update_grip_visibility (window); } @@ -5388,7 +5390,6 @@ resize_grip_create_window (GtkWindow *window) gdk_window_raise (priv->grip_window); - set_grip_cursor (window); set_grip_shape (window); update_grip_visibility (window); } @@ -5455,9 +5456,14 @@ update_grip_visibility (GtkWindow *window) if (priv->grip_window != NULL) { if (val) - gdk_window_show (priv->grip_window); + { + gdk_window_show (priv->grip_window); + set_grip_cursor (window); + } else - gdk_window_hide (priv->grip_window); + { + gdk_window_hide (priv->grip_window); + } } if (priv->resize_grip_visible != val) @@ -6869,8 +6875,7 @@ gtk_window_move_resize (GtkWindow *window) gtk_widget_size_allocate (widget, &allocation); set_grip_position (window); - set_grip_cursor (window); - set_grip_shape (window); + update_grip_visibility (window); gdk_window_process_updates (gdk_window, TRUE);