[mutter/wip/carlosg/input-thread: 48/84] backends/native: Proxy modifier state changes via MetaSeatImpl




commit 3498ec7594675a8270e6a0192633119bbb9c82b6
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Aug 11 17:38:32 2020 +0200

    backends/native: Proxy modifier state changes via MetaSeatImpl
    
    This changes within the MetaSeatImpl realm, so use a signal to forward
    this to the MetaSeatNative/MetaKeymapNative one.

 src/backends/native/meta-seat-impl.c   |  9 ++++++++-
 src/backends/native/meta-seat-native.c | 12 ++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/native/meta-seat-impl.c b/src/backends/native/meta-seat-impl.c
index 4aeb0d0c08..32773a4781 100644
--- a/src/backends/native/meta-seat-impl.c
+++ b/src/backends/native/meta-seat-impl.c
@@ -112,6 +112,7 @@ enum
   KBD_A11Y_MODS_STATE_CHANGED,
   TOUCH_MODE,
   BELL,
+  MODS_STATE_CHANGED,
   N_SIGNALS
 };
 
@@ -343,7 +344,7 @@ meta_seat_impl_notify_key (MetaSeatImpl       *seat_impl,
     {
       MetaInputDeviceNative *keyboard_native;
 
-      g_signal_emit_by_name (seat_impl->keymap, "state-changed");
+      g_signal_emit (seat_impl, signals[MODS_STATE_CHANGED], 0);
       meta_seat_impl_sync_leds (seat_impl);
       keyboard_native = META_INPUT_DEVICE_NATIVE (seat_impl->core_keyboard);
       meta_input_device_native_a11y_maybe_notify_toggle_keys (keyboard_native);
@@ -2738,6 +2739,12 @@ meta_seat_impl_class_init (MetaSeatImplClass *klass)
                   G_SIGNAL_RUN_LAST,
                   0, NULL, NULL, NULL,
                   G_TYPE_NONE, 0);
+  signals[MODS_STATE_CHANGED] =
+    g_signal_new ("mods-state-changed",
+                  G_TYPE_FROM_CLASS (object_class),
+                  G_SIGNAL_RUN_LAST,
+                  0, NULL, NULL, NULL,
+                  G_TYPE_NONE, 0);
 
   g_object_class_install_properties (object_class, N_PROPS, props);
 }
diff --git a/src/backends/native/meta-seat-native.c b/src/backends/native/meta-seat-native.c
index f5ec6379d2..153e5674d8 100644
--- a/src/backends/native/meta-seat-native.c
+++ b/src/backends/native/meta-seat-native.c
@@ -146,6 +146,16 @@ proxy_bell (MetaSeatImpl   *seat_impl,
   clutter_seat_bell_notify (CLUTTER_SEAT (seat_native));
 }
 
+static void
+proxy_mods_state_changed (MetaSeatImpl   *seat_impl,
+                          ClutterSeat    *seat)
+{
+  ClutterKeymap *keymap;
+
+  keymap = clutter_seat_get_keymap (seat);
+  g_signal_emit_by_name (keymap, "state-changed");
+}
+
 static void
 meta_seat_native_constructed (GObject *object)
 {
@@ -160,6 +170,8 @@ meta_seat_native_constructed (GObject *object)
                     G_CALLBACK (proxy_touch_mode_changed), seat);
   g_signal_connect (seat->impl, "bell",
                     G_CALLBACK (proxy_bell), seat);
+  g_signal_connect (seat->impl, "mods-state-changed",
+                    G_CALLBACK (proxy_mods_state_changed), seat);
 
   seat->core_pointer = meta_seat_impl_get_pointer (seat->impl);
   seat->core_keyboard = meta_seat_impl_get_keyboard (seat->impl);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]