From f48525aa703e0e11134347b38571661d6ca829fd Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
Date: Sun, 10 May 2026 13:55:45 -0400
Subject: [PATCH] x11: Store the mouse button serial for emulated pointer
events as well
Otherwise, filtered emulated button events, such as for mouse wheels, can slip through the core event handler.
---
src/video/x11/SDL_x11xinput2.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c
index c099589591938..56ccee53e5e42 100644
--- a/src/video/x11/SDL_x11xinput2.c
+++ b/src/video/x11/SDL_x11xinput2.c
@@ -605,6 +605,9 @@ void X11_HandleXinput2Event(SDL_VideoDevice *_this, XGenericEventCookie *cookie)
bool pointer_emulated = false;
#endif
+ // Store the button serial to filter out redundant core button events.
+ videodata->xinput_last_button_serial = xev->serial;
+
if (pen) {
if (xev->deviceid != xev->sourceid) {
// Discard events from "Master" devices to avoid duplicates.
@@ -622,9 +625,6 @@ void X11_HandleXinput2Event(SDL_VideoDevice *_this, XGenericEventCookie *cookie)
SDL_WindowData *windowdata = X11_FindWindow(videodata, xev->event);
int x_ticks = 0, y_ticks = 0;
- // Store the button serial to filter out redundant core button events.
- videodata->xinput_last_button_serial = xev->serial;
-
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) {