mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-27 15:25:20 +00:00
x11: Ignore slave button presses when the window lacks keyboard focus
XInput2 can send slave button presses before FocusIn events, which can confuse the click-through suppression logic. A window must have keyboard focus to grab the mouse anyway, so ignore slave presses when lacking keyboard focus.
This commit is contained in:
committed by
Ryan C. Gordon
parent
8371c09aa7
commit
ef9a5b7040
@@ -626,8 +626,10 @@ void X11_HandleXinput2Event(SDL_VideoDevice *_this, XGenericEventCookie *cookie)
|
||||
int x_ticks = 0, y_ticks = 0;
|
||||
|
||||
if (xev->deviceid != videodata->xinput_master_pointer_device) {
|
||||
// Ignore slave button events on non-focused windows, or focus can be incorrectly set while a grab is active.
|
||||
if (SDL_GetMouseFocus() != windowdata->window) {
|
||||
/* Ignore slave button events on non-focused windows, as they can arrive before FocusIn events,
|
||||
* or result in focus being incorrectly set while a grab is active.
|
||||
*/
|
||||
if (SDL_GetMouseFocus() != windowdata->window || SDL_GetKeyboardFocus() != windowdata->window) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user