GDK W32: Ignore autorepeated key presses on modifier keys
authorJeremy Tan <jtanx@outlook.com>
Sat, 17 Sep 2016 12:46:30 +0000 (20:46 +0800)
committerРуслан Ижбулатов <lrn1986@gmail.com>
Mon, 19 Sep 2016 12:36:53 +0000 (12:36 +0000)
The X11 backend does not send autorepeated messages for modifier keys,
and doing so prevents motion compression from working.

https://bugzilla.gnome.org/show_bug.cgi?id=771568

gdk/win32/gdkevents-win32.c

index 220771b152358b14e9d2e8d499d2386d4eabeb2a..363193ab26d2a0035d5fbbc3414e69fd058632fd 100644 (file)
@@ -2281,6 +2281,14 @@ gdk_event_translate (MSG  *msg,
          in_ime_composition)
        break;
 
+      /* Ignore autorepeats on modifiers */
+      if (msg->message == WM_KEYDOWN &&
+          (msg->wParam == VK_MENU ||
+           msg->wParam == VK_CONTROL ||
+           msg->wParam == VK_SHIFT) &&
+           ((HIWORD(msg->lParam) & KF_REPEAT) >= 1))
+        break;
+
       if (keyboard_grab &&
           !propagate (&window, msg,
                      keyboard_grab->window,