window: Don't refuse to move focus to the grab window

We refuse to move focus while a grab operation is in place. While this
generally makes sense, there's no reason why the window that owns the
grab shouldn't be given the regular input focus as well - we pretty
much assume that the grab window is also the focus window anyway.

In fact there's a strong reason for allowing the focus change here:
If the grab window isn't the focus window, it probably has a modal
transient that is focused instead, and a likely reason for the focus
request is that the transient is being unmanaged and we must move
the focus elsewhere.

https://gitlab.gnome.org/GNOME/mutter/issues/15

(cherry picked from commit 148da24f95)
This commit is contained in:
Florian Müllner 2018-05-25 18:18:23 +00:00 committed by Ray Strode
parent a54976da15
commit c19274706d

View File

@ -4628,6 +4628,7 @@ meta_window_focus (MetaWindow *window,
window->desc, window->input, window->take_focus); window->desc, window->input, window->take_focus);
if (window->display->grab_window && if (window->display->grab_window &&
window->display->grab_window != window &&
window->display->grab_window->all_keys_grabbed && window->display->grab_window->all_keys_grabbed &&
!window->display->grab_window->unmanaging) !window->display->grab_window->unmanaging)
{ {