x11: Fix spurious keyboard focus events
diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c
index ff65d98..bdd9518 100644
--- a/src/video/x11/SDL_x11events.c
+++ b/src/video/x11/SDL_x11events.c
@@ -818,9 +818,9 @@
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 @@
#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;
}