1
0
Fork 0

window: unmanage dialog when clearing transient_for

On Wayland, xdg-foreign would leave a modal dialog managed even after
the imported surface is destroyed.

This is sub-optimal and this breaks the atomic relationship one would
expect between the parent and its modal dialog.

Make sure we unmanage the dialog if transient_for is unset even for
Wayland native windows.

Related: https://gitlab.gnome.org/GNOME/mutter/issues/174
Related: https://gitlab.gnome.org/GNOME/mutter/issues/221
This commit is contained in:
Olivier Fourdan 2018-07-10 16:42:42 +02:00
parent 267503b5f3
commit b443bd42ac

View file

@ -7987,7 +7987,15 @@ meta_window_set_transient_for (MetaWindow *window,
}
}
}
else if (window->attached && parent == NULL)
{
guint32 timestamp;
timestamp =
meta_display_get_current_time_roundtrip (window->display);
meta_window_unmanage (window, timestamp);
return;
}
/* We know this won't create a reference cycle because we check for loops */
g_clear_object (&window->transient_for);
window->transient_for = parent ? g_object_ref (parent) : NULL;