From 44cb3bcfeda9abcb7f53151dd6b3c9cd841422db Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Wed, 13 Oct 2010 23:04:11 -0500 Subject: [PATCH] Implement style_set() for GtkWindow to resize window grips when the style changes. --- gtk/gtkwindow.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index a27b474f25..f56b3ccbd0 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -343,6 +343,8 @@ static gint gtk_window_focus_in_event (GtkWidget *widget, GdkEventFocus *event); static gint gtk_window_focus_out_event (GtkWidget *widget, GdkEventFocus *event); +static void gtk_window_style_set (GtkWidget *widget, + GtkStyle *style); static gint gtk_window_client_event (GtkWidget *widget, GdkEventClient *event); static gboolean gtk_window_state_event (GtkWidget *widget, @@ -589,6 +591,7 @@ gtk_window_class_init (GtkWindowClass *klass) widget_class->window_state_event = gtk_window_state_event; widget_class->direction_changed = gtk_window_direction_changed; widget_class->state_changed = gtk_window_state_changed; + widget_class->style_set = gtk_window_style_set; container_class->check_resize = gtk_window_check_resize; @@ -5356,6 +5359,25 @@ gtk_window_state_changed (GtkWidget *widget, update_grip_visibility (window); } +static void +gtk_window_style_set (GtkWidget *widget, + GtkStyle *style) +{ + GtkWindow *window = GTK_WINDOW (widget); + GtkWindowPrivate *priv = window->priv; + GdkRectangle rect; + + if (priv->grip_window != NULL && gtk_window_get_resize_grip_area (window, &rect)) + { + gdk_window_move_resize (priv->grip_window, + rect.x, rect.y, + rect.width, rect.height); + + set_grip_shape (window); + gtk_widget_queue_resize (widget); + } +} + static void resize_grip_create_window (GtkWindow *window) { @@ -5492,7 +5514,7 @@ gtk_window_resize_grip_is_visible (GtkWindow *window) { GtkWidget *widget; GtkWindowPrivate *priv; - GdkWindowEdge *edge; + GdkWindowEdge edge; g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);