mirror of
https://github.com/brl/mutter.git
synced 2024-11-27 18:40:40 -05:00
1f56514e40
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
|
||
---|---|---|
.. | ||
atomnames.h | ||
events.c | ||
events.h | ||
group-private.h | ||
group-props.c | ||
group-props.h | ||
group.c | ||
iconcache.c | ||
iconcache.h | ||
meta-selection-source-x11-private.h | ||
meta-selection-source-x11.c | ||
meta-startup-notification-x11.c | ||
meta-startup-notification-x11.h | ||
meta-x11-display-private.h | ||
meta-x11-display.c | ||
meta-x11-errors.c | ||
meta-x11-selection-input-stream-private.h | ||
meta-x11-selection-input-stream.c | ||
meta-x11-selection-output-stream-private.h | ||
meta-x11-selection-output-stream.c | ||
meta-x11-selection-private.h | ||
meta-x11-selection.c | ||
meta-x11-stack-private.h | ||
meta-x11-stack.c | ||
mutter-Xatomtype.h | ||
session.c | ||
session.h | ||
window-props.c | ||
window-props.h | ||
window-x11-private.h | ||
window-x11.c | ||
window-x11.h | ||
xprops.c | ||
xprops.h |