mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 19:00:08 +00:00
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.
This commit is contained in:
parent
b8c8f2ccb1
commit
a28295a742
@ -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
|
||||
{
|
||||
|
@ -9,6 +9,7 @@ remove_notebook_page (GtkWidget *button,
|
||||
GtkWidget *toplevel)
|
||||
{
|
||||
gtk_container_remove (GTK_CONTAINER (notebook), toplevel);
|
||||
gtk_widget_show (toplevel);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
|
Loading…
Reference in New Issue
Block a user