diff options
author | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2011-01-04 00:55:04 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2011-01-06 14:39:41 +0900 |
commit | a28295a742d6492a03c92413e3570724406ca3e1 (patch) | |
tree | 03bccabead4aed51be445bdfaa3df8951e5494d6 /gtk/gtkwindow.c | |
parent | b8c8f2ccb1a1b69514bf86c02f223b5f8482e457 (diff) | |
download | gtk+-a28295a742d6492a03c92413e3570724406ca3e1.tar.gz |
Dont show the GtkWindow when removing it from a parent and becomming a toplevel
Showing the window causes it to try to grab focus, this causes problems
when embedded toplevels run through dispose cycles.
Diffstat (limited to 'gtk/gtkwindow.c')
-rw-r--r-- | gtk/gtkwindow.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 09879cecad..e69c0185bd 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -9236,14 +9236,16 @@ _gtk_window_set_is_toplevel (GtkWindow *window, if (is_toplevel) { - gboolean was_visible = gtk_widget_get_visible (widget); - /* Pass through regular pathways of an embedded toplevel * to go through unmapping and hiding the widget before * becomming a toplevel again. + * + * We remain hidden after becomming toplevel in order to + * avoid problems during an embedded toplevel's dispose cycle + * (When a toplevel window is shown it tries to grab focus again, + * this causes problems while disposing). */ - if (was_visible) - gtk_widget_hide (widget); + gtk_widget_hide (widget); /* Save the toplevel this widget was previously anchored into before * propagating a hierarchy-changed. @@ -9266,13 +9268,6 @@ _gtk_window_set_is_toplevel (GtkWindow *window, _gtk_widget_propagate_hierarchy_changed (widget, toplevel); toplevel_list = g_slist_prepend (toplevel_list, window); - - /* If an embedded toplevel gets removed from the hierarchy - * and is still in a visible state, we need to show it again - * so it will be realized as a real toplevel again. - */ - if (was_visible) - gtk_widget_show (widget); } else { |