[gtk+] wayland: Respect keymap repeat information
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] wayland: Respect keymap repeat information
- Date: Sat, 23 Mar 2013 21:29:04 +0000 (UTC)
commit a70acc03c59fa369540b3110dcfef3541ced83aa
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Mar 23 17:09:38 2013 -0400
wayland: Respect keymap repeat information
xkb has a function to tell us whether a key should be repeated
or not. Lets use that information.
gdk/wayland/gdkdevice-wayland.c | 5 +++++
gdk/wayland/gdkprivate-wayland.h | 1 +
2 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index f485269..91056ae 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -963,12 +963,14 @@ deliver_key_event(GdkWaylandDeviceData *device,
{
GdkEvent *event;
struct xkb_state *xkb_state;
+ struct xkb_keymap *xkb_keymap;
GdkKeymap *keymap;
xkb_keysym_t sym;
guint delay, interval;
keymap = device->keymap;
xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap);
+ xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap);
sym = xkb_state_key_get_one_sym (xkb_state, key);
@@ -996,6 +998,9 @@ deliver_key_event(GdkWaylandDeviceData *device,
event->key.hardware_keycode, event->key.keyval,
event->key.string, event->key.state));
+ if (!xkb_keymap_key_repeats (xkb_keymap, key))
+ return FALSE;
+
if (!get_key_repeat (device, &delay, &interval))
return FALSE;
diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h
index c083396..0b7f5b5 100644
--- a/gdk/wayland/gdkprivate-wayland.h
+++ b/gdk/wayland/gdkprivate-wayland.h
@@ -52,6 +52,7 @@ GdkKeymap *_gdk_wayland_keymap_new (void);
GdkKeymap *_gdk_wayland_keymap_new_from_fd (uint32_t format,
uint32_t fd, uint32_t size);
struct xkb_state *_gdk_wayland_keymap_get_xkb_state (GdkKeymap *keymap);
+struct xkb_keymap *_gdk_wayland_keymap_get_xkb_keymap (GdkKeymap *keymap);
void _gdk_wayland_display_finalize_cursors (GdkWaylandDisplay *display);
void _gdk_wayland_display_update_cursors (GdkWaylandDisplay *display,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]