Ignore repeat keys in notify_key
authorDaniel Stone <daniel@fooishbar.org>
Fri, 22 Jun 2012 12:21:31 +0000 (13:21 +0100)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 22 Jun 2012 15:52:05 +0000 (11:52 -0400)
Let compositors just blithely post through every event they get,
including repeating keys.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
src/compositor.c

index d914b67..52ef89e 100644 (file)
@@ -1858,8 +1858,12 @@ notify_key(struct wl_seat *seat, uint32_t time, uint32_t key,
        mods = update_modifier_state(ws, key, state);
        end = seat->keyboard->keys.data + seat->keyboard->keys.size;
        for (k = seat->keyboard->keys.data; k < end; k++) {
-               if (*k == key)
+               if (*k == key) {
+                       /* Ignore server-generated repeats. */
+                       if (state == WL_KEYBOARD_KEY_STATE_PRESSED)
+                               return;
                        *k = *--end;
+               }
        }
        seat->keyboard->keys.size = (void *) end - seat->keyboard->keys.data;
        if (state == WL_KEYBOARD_KEY_STATE_PRESSED) {