summaryrefslogtreecommitdiff
path: root/gdk/wayland
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2013-04-03 23:52:52 -0400
committerMatthias Clasen <mclasen@redhat.com>2013-04-03 23:52:52 -0400
commit246f32a58d45febee12d8441702530090d52e6ab (patch)
treefc2cae601a5a0e4bec86e3bbd4a739783e21a10c /gdk/wayland
parent2f8f1ef485e4d0a48dd7acad00cdbd6e6b5d25b8 (diff)
downloadgtk+-246f32a58d45febee12d8441702530090d52e6ab.tar.gz
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.
Diffstat (limited to 'gdk/wayland')
-rw-r--r--gdk/wayland/gdkdevice-wayland.c5
1 files changed, 5 insertions, 0 deletions
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 = {