mirror of
https://github.com/brl/mutter.git
synced 2025-02-26 01:34:09 +00:00

When using DesktopIcons extension and clicking in an icon, gnome-shell starts an infinite loop caused by the first focus change that may trigger on X11 a focus in/out event that leads to stage activation/deactivation which never ends. This happens because as part of meta_x11_display_set_input_focus_xwindow() to focus the X11 stage window, we unset the display focus, but this also causes to request the X11 display to unset the focus since we convolute by calling meta_x11_display_set_input_focus() with no window, that leads to focusing the no_focus_window and then a focus-in / focus-out dance that the shell amplifies in order to give back the focus to the stage. In order to fix this, mimic what meta_display_set_input_focus() does, but without updating the X11 display, and so without implicitly calling meta_x11_display_set_input_focus(), stopping the said convolution and properly focusing the requested xwindow. Also ensure that we're not doing this when using an older timestamp, since this check isn't performed anymore. Fixes https://gitlab.gnome.org/GNOME/mutter/issues/896 Fixes https://gitlab.gnome.org/GNOME/mutter/issues/899 https://gitlab.gnome.org/GNOME/mutter/merge_requests/909 (cherry picked from commit efe5bed5b4a8706fc796dfd7dc07562a866c12ed)