mirror of
https://github.com/brl/mutter.git
synced 2024-11-28 02:50:41 -05:00
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
(cherry picked from commit b443bd42ac
)
This commit is contained in:
parent
3e2294ce44
commit
3712f8c99d
@ -7942,7 +7942,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 */
|
/* We know this won't create a reference cycle because we check for loops */
|
||||||
g_clear_object (&window->transient_for);
|
g_clear_object (&window->transient_for);
|
||||||
window->transient_for = parent ? g_object_ref (parent) : NULL;
|
window->transient_for = parent ? g_object_ref (parent) : NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user