diff --git a/src/core/events.c b/src/core/events.c index 78720cc41..7107e67c9 100644 --- a/src/core/events.c +++ b/src/core/events.c @@ -226,10 +226,16 @@ meta_display_handle_event (MetaDisplay *display, gboolean has_grab; #ifdef HAVE_WAYLAND MetaWaylandCompositor *wayland_compositor; + MetaWaylandTextInput *wayland_text_input = NULL; #endif #ifdef HAVE_WAYLAND wayland_compositor = meta_context_get_wayland_compositor (context); + if (wayland_compositor) + { + wayland_text_input = + meta_wayland_compositor_get_text_input (wayland_compositor); + } #endif COGL_TRACE_BEGIN_SCOPED (MetaDisplayHandleEvent, @@ -278,6 +284,15 @@ meta_display_handle_event (MetaDisplay *display, } #ifdef HAVE_WAYLAND + if (wayland_text_input && + !has_grab && + !meta_compositor_get_current_window_drag (compositor) && + meta_wayland_text_input_update (wayland_text_input, event)) + { + bypass_wayland = bypass_clutter = TRUE; + goto out; + } + if (wayland_compositor) meta_wayland_compositor_update (wayland_compositor, event); #endif diff --git a/src/wayland/meta-wayland-seat.c b/src/wayland/meta-wayland-seat.c index 8901454de..b673aa6c6 100644 --- a/src/wayland/meta-wayland-seat.c +++ b/src/wayland/meta-wayland-seat.c @@ -384,9 +384,6 @@ meta_wayland_seat_handle_event (MetaWaylandSeat *seat, break; case CLUTTER_KEY_PRESS: case CLUTTER_KEY_RELEASE: - if (meta_wayland_text_input_update (seat->text_input, event)) - return TRUE; - if (meta_wayland_seat_has_keyboard (seat)) return meta_wayland_keyboard_handle_event (seat->keyboard, (const ClutterKeyEvent *) event);