x11/events: Do not handle enter/leave during grabs

The COMPOSITOR_GRAB event route has effectively been replaced by
ClutterGrabs, which are no longer covered by the existing check.

So check for grabs as well to restore the old behavior.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2436>
This commit is contained in:
Florian Müllner 2022-05-28 12:09:49 +02:00 committed by Marge Bot
parent f73ad1d8d2
commit d04a197723

View File

@ -943,6 +943,8 @@ handle_input_xevent (MetaX11Display *x11_display,
MetaWindow *window; MetaWindow *window;
MetaDisplay *display = x11_display->display; MetaDisplay *display = x11_display->display;
MetaWorkspaceManager *workspace_manager = display->workspace_manager; MetaWorkspaceManager *workspace_manager = display->workspace_manager;
MetaBackend *backend = meta_get_backend ();
ClutterStage *stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
if (input_event == NULL) if (input_event == NULL)
return FALSE; return FALSE;
@ -973,6 +975,9 @@ handle_input_xevent (MetaX11Display *x11_display,
if (display->event_route != META_EVENT_ROUTE_NORMAL) if (display->event_route != META_EVENT_ROUTE_NORMAL)
break; break;
if (clutter_stage_get_grab_actor (stage) != NULL)
break;
/* Check if we've entered a window; do this even if window->has_focus to /* Check if we've entered a window; do this even if window->has_focus to
* avoid races. * avoid races.
*/ */
@ -992,6 +997,9 @@ handle_input_xevent (MetaX11Display *x11_display,
if (display->event_route != META_EVENT_ROUTE_NORMAL) if (display->event_route != META_EVENT_ROUTE_NORMAL)
break; break;
if (clutter_stage_get_grab_actor (stage) != NULL)
break;
if (window != NULL && if (window != NULL &&
enter_event->mode != XINotifyGrab && enter_event->mode != XINotifyGrab &&
enter_event->mode != XINotifyUngrab) enter_event->mode != XINotifyUngrab)