فهرست منبع

X11: Don't ignore keyboard mapping changes.

MappingNotify events don't have a window associated with them, so SDL was
dropping these before the point where we would have handled them.
Ryan C. Gordon 10 سال پیش
والد
کامیت
acdb494ffd
1فایلهای تغییر یافته به همراه7 افزوده شده و 10 حذف شده
  1. 7 10
      src/video/x11/SDL_x11events.c

+ 7 - 10
src/video/x11/SDL_x11events.c

@@ -642,11 +642,17 @@ X11_DispatchEvent(_THIS)
         }
     }
     if (!data) {
-        /* The window for KeymapNotify events is 0 */
+        /* The window for KeymapNotify, etc events is 0 */
         if (xevent.type == KeymapNotify) {
             if (SDL_GetKeyboardFocus() != NULL) {
                 X11_ReconcileKeyboardState(_this);
             }
+        } else if (xevent.type == MappingNotify) {
+            /* Has the keyboard layout changed? */
+#ifdef DEBUG_XEVENTS
+            printf("window %p: MappingNotify!\n", data);
+#endif
+            X11_UpdateKeymap(_this);
         }
         return;
     }
@@ -762,15 +768,6 @@ X11_DispatchEvent(_THIS)
         }
         break;
 
-        /* Has the keyboard layout changed? */
-    case MappingNotify:{
-#ifdef DEBUG_XEVENTS
-            printf("window %p: MappingNotify!\n", data);
-#endif
-            X11_UpdateKeymap(_this);
-        }
-        break;
-
         /* Key press? */
     case KeyPress:{
             KeyCode keycode = xevent.xkey.keycode;