Prechádzať zdrojové kódy

x11: Fix spurious keyboard focus events

James Legg 4 rokov pred
rodič
commit
f1d5ced167
1 zmenil súbory, kde vykonal 7 pridanie a 5 odobranie
  1. 7 5
      src/video/x11/SDL_x11events.c

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

@@ -818,9 +818,9 @@ X11_DispatchEvent(_THIS)
                 break;
             }
 
-            if (xevent.xfocus.detail == NotifyInferior) {
+            if (xevent.xfocus.detail == NotifyInferior || xevent.xfocus.detail == NotifyPointer) {
 #ifdef DEBUG_XEVENTS
-                printf("window %p: FocusIn (NotifierInferior, ignoring)\n", data);
+                printf("window %p: FocusIn (NotifyInferior/NotifyPointer, ignoring)\n", data);
 #endif
                 break;
             }
@@ -851,10 +851,12 @@ X11_DispatchEvent(_THIS)
 #endif
                 break;
             }
-            if (xevent.xfocus.detail == NotifyInferior) {
-                /* We still have focus if a child gets focus */
+            if (xevent.xfocus.detail == NotifyInferior || xevent.xfocus.detail == NotifyPointer) {
+                /* We still have focus if a child gets focus. We also don't
+                   care about the position of the pointer when the keyboard
+                   focus changed. */
 #ifdef DEBUG_XEVENTS
-                printf("window %p: FocusOut (NotifierInferior, ignoring)\n", data);
+                printf("window %p: FocusOut (NotifyInferior/NotifyPointer, ignoring)\n", data);
 #endif
                 break;
             }