From 365902cd58dca6b8dc5e4a92d2b59a269137fcb3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 24 Jan 2014 14:32:00 -0500 Subject: [PATCH] Re-realize the window if needed When gtk_window_set_titlebar is called, we need to set up client-side decorations properly, and the easiest way to do so is to realize the window again. Really, you should call set_titlebar before the window is realized. https://bugzilla.gnome.org/show_bug.cgi?id=722919 --- gtk/gtkwindow.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 132617ae44..3605f5a64a 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -3682,9 +3682,14 @@ gtk_window_set_titlebar (GtkWindow *window, GtkWidget *widget = GTK_WIDGET (window); GtkWindowPrivate *priv = window->priv; GdkVisual *visual; + gboolean was_mapped; g_return_if_fail (GTK_IS_WINDOW (window)); + was_mapped = gtk_widget_get_mapped (widget); + if (gtk_widget_get_realized (widget)) + gtk_widget_unrealize (widget); + unset_titlebar (window); if (titlebar == NULL) @@ -3715,7 +3720,8 @@ gtk_window_set_titlebar (GtkWindow *window, gtk_style_context_add_class (gtk_widget_get_style_context (titlebar), GTK_STYLE_CLASS_TITLEBAR); - gtk_widget_queue_resize (widget); + if (was_mapped) + gtk_widget_map (widget); } gboolean