mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 16:40:41 -05:00
core: Do not eat both wayland and clutter events with wayland popups
There may be situations where we may stack a ClutterGrab on top of a wayland popup's. Since ClutterGrab should win over client grabs, we mostly correctly figure out that it should start doing bypass_wayland=TRUE and bypass_clutter=FALSE while the ClutterGrab holds, however the late checks for the MetaDisplay event route can still toggle bypass_clutter on, resulting in neither handling events. This check for wayland popups in the display event route should just enforce wayland handling if wayland is meant to be receiving events, so ensure these don't mix together. Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5020 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2271>
This commit is contained in:
parent
d84fb91cad
commit
d838460fe9
@ -518,7 +518,7 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
|
|
||||||
/* If a Wayland client has a grab, don't pass that through to Clutter */
|
/* If a Wayland client has a grab, don't pass that through to Clutter */
|
||||||
if (display->event_route == META_EVENT_ROUTE_WAYLAND_POPUP)
|
if (display->event_route == META_EVENT_ROUTE_WAYLAND_POPUP)
|
||||||
bypass_clutter = TRUE;
|
bypass_clutter = !bypass_wayland;
|
||||||
|
|
||||||
#ifdef HAVE_WAYLAND
|
#ifdef HAVE_WAYLAND
|
||||||
if (compositor && !bypass_wayland)
|
if (compositor && !bypass_wayland)
|
||||||
|
Loading…
Reference in New Issue
Block a user