core: Allow fullscreen modals to move out of the center of their parents

If a modal dialog (i.e. with a "revolves around center of parent window" policy)
becomes fullscreen, we cannot neatly honor both the modal dialog going fullscreen
and the window staying around the center of its parent.

In order to make fullscreening work in this situation, allow fullscreen modal
dialogs to "snap out" of the parent. This rule will become again effective after
the window is unfullscreened.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3425
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3695>
This commit is contained in:
Carlos Garnacho 2024-04-10 16:55:24 +02:00 committed by Marge Bot
parent d36afd32d7
commit 3b5f467163

View File

@ -1154,6 +1154,9 @@ constrain_modal_dialog (MetaWindow *window,
meta_window_get_placement_rule (window))
return TRUE;
if (window->fullscreen)
return TRUE;
/* We want to center the dialog on the parent, including the decorations
for both of them. info->current is in client X window coordinates, so we need
to convert them to frame coordinates, apply the centering and then