mirror of
https://github.com/brl/mutter.git
synced 2024-12-26 04:42:14 +00:00
wayland: Only process enter and leave events Clutter created surfaces
When combining with GTK we will receive enter and leave events for surfaces from both toolkits therefore we must filter our events appropriately.
This commit is contained in:
parent
61dc824c91
commit
b6a931c8d9
@ -356,6 +356,9 @@ clutter_wayland_handle_pointer_enter (void *data,
|
||||
ClutterBackend *backend;
|
||||
ClutterBackendWayland *backend_wayland;
|
||||
|
||||
if (!CLUTTER_IS_STAGE_COGL (wl_surface_get_user_data (surface)))
|
||||
return;
|
||||
|
||||
stage_cogl = wl_surface_get_user_data (surface);
|
||||
|
||||
device->pointer_focus = stage_cogl;
|
||||
@ -407,6 +410,9 @@ clutter_wayland_handle_pointer_leave (void *data,
|
||||
ClutterStageCogl *stage_cogl;
|
||||
ClutterEvent *event;
|
||||
|
||||
if (!CLUTTER_IS_STAGE_COGL (wl_surface_get_user_data (surface)))
|
||||
return;
|
||||
|
||||
stage_cogl = wl_surface_get_user_data (surface);
|
||||
g_assert (device->pointer_focus == stage_cogl);
|
||||
|
||||
@ -434,6 +440,9 @@ clutter_wayland_handle_keyboard_enter (void *data,
|
||||
ClutterInputDeviceWayland *device = data;
|
||||
ClutterStageCogl *stage_cogl;
|
||||
|
||||
if (!CLUTTER_IS_STAGE_COGL (wl_surface_get_user_data (surface)))
|
||||
return;
|
||||
|
||||
stage_cogl = wl_surface_get_user_data (surface);
|
||||
g_assert (device->keyboard_focus == NULL);
|
||||
device->keyboard_focus = stage_cogl;
|
||||
@ -452,6 +461,11 @@ clutter_wayland_handle_keyboard_leave (void *data,
|
||||
ClutterInputDeviceWayland *device = data;
|
||||
ClutterStageCogl *stage_cogl;
|
||||
|
||||
if (!surface)
|
||||
return;
|
||||
if (!CLUTTER_IS_STAGE_COGL (wl_surface_get_user_data (surface)))
|
||||
return;
|
||||
|
||||
stage_cogl = wl_surface_get_user_data (surface);
|
||||
g_assert (device->keyboard_focus == stage_cogl);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user