diff options
-rw-r--r-- | src/wayland/meta-wayland-seat.c | 10 | ||||
-rw-r--r-- | src/wayland/meta-wayland-seat.h | 3 | ||||
-rw-r--r-- | src/wayland/meta-wayland.c | 1 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/wayland/meta-wayland-seat.c b/src/wayland/meta-wayland-seat.c index a574594f4..cedb3e3bc 100644 --- a/src/wayland/meta-wayland-seat.c +++ b/src/wayland/meta-wayland-seat.c @@ -225,6 +225,8 @@ meta_wayland_seat_new (MetaWaylandCompositor *compositor, "seat", seat, NULL); + seat->text_input = meta_wayland_text_input_new (seat); + meta_wayland_data_device_init (&seat->data_device); device_manager = clutter_device_manager_get_default (); @@ -260,6 +262,7 @@ meta_wayland_seat_free (MetaWaylandSeat *seat) g_object_unref (seat->pointer); g_object_unref (seat->keyboard); g_object_unref (seat->touch); + g_object_unref (seat->text_input); g_slice_free (MetaWaylandSeat, seat); } @@ -376,6 +379,11 @@ meta_wayland_seat_handle_event (MetaWaylandSeat *seat, case CLUTTER_KEY_PRESS: case CLUTTER_KEY_RELEASE: + if (seat->text_input && + clutter_input_focus_filter_key_event (CLUTTER_INPUT_FOCUS (seat->text_input), + (const ClutterKeyEvent *) event)) + return TRUE; + if (meta_wayland_seat_has_keyboard (seat)) return meta_wayland_keyboard_handle_event (seat->keyboard, (const ClutterKeyEvent *) event); @@ -416,6 +424,8 @@ meta_wayland_seat_set_input_focus (MetaWaylandSeat *seat, tablet_seat = meta_wayland_tablet_manager_ensure_seat (compositor->tablet_manager, seat); meta_wayland_tablet_seat_set_pad_focus (tablet_seat, surface); + + meta_wayland_text_input_set_focus (seat->text_input, surface); } gboolean diff --git a/src/wayland/meta-wayland-seat.h b/src/wayland/meta-wayland-seat.h index 78abb1594..2f3df5f55 100644 --- a/src/wayland/meta-wayland-seat.h +++ b/src/wayland/meta-wayland-seat.h @@ -32,6 +32,7 @@ #include "meta-wayland-touch.h" #include "meta-wayland-data-device.h" #include "meta-wayland-tablet-tool.h" +#include "meta-wayland-text-input.h" struct _MetaWaylandSeat { @@ -42,6 +43,8 @@ struct _MetaWaylandSeat MetaWaylandKeyboard *keyboard; MetaWaylandTouch *touch; + MetaWaylandTextInput *text_input; + MetaWaylandDataDevice data_device; guint capabilities; diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c index adb34c214..ba0233c43 100644 --- a/src/wayland/meta-wayland.c +++ b/src/wayland/meta-wayland.c @@ -384,6 +384,7 @@ meta_wayland_init (void) meta_wayland_dma_buf_init (compositor); meta_wayland_keyboard_shortcuts_inhibit_init (compositor); meta_wayland_surface_inhibit_shortcuts_dialog_init (); + meta_wayland_text_input_init_global (compositor); /* Xwayland specific protocol, needs to be filtered out for all other clients */ if (meta_xwayland_grab_keyboard_init (compositor)) |