From 246f32a58d45febee12d8441702530090d52e6ab Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 3 Apr 2013 23:52:52 -0400 Subject: [PATCH] wayland: Emit ::direction-changed when appropriate We always emit direction-changed when we get a new keymap, but for state changes, we compare old and new direction and only emit the signal when the direction actually changes. --- gdk/wayland/gdkdevice-wayland.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 74dd5d52f4..cd7e5e3b65 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -829,6 +829,7 @@ keyboard_handle_keymap (void *data, g_signal_emit_by_name (device->keymap, "keys-changed"); g_signal_emit_by_name (device->keymap, "state-changed"); + g_signal_emit_by_name (device->keymap, "direction-changed"); } static void @@ -1122,14 +1123,18 @@ keyboard_handle_modifiers (void *data, GdkWaylandDeviceData *device = data; GdkKeymap *keymap; struct xkb_state *xkb_state; + PangoDirection direction; keymap = device->keymap; + direction = gdk_keymap_get_direction (keymap); xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap); device->modifiers = mods_depressed | mods_latched | mods_locked; xkb_state_update_mask (xkb_state, mods_depressed, mods_latched, mods_locked, group, 0, 0); g_signal_emit_by_name (keymap, "state-changed"); + if (direction != gdk_keymap_get_direction (keymap)) + g_signal_emit_by_name (keymap, "direction-changed"); } static const struct wl_pointer_listener pointer_listener = {