ソースを参照

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.
Frank Praznik 1 ヶ月 前
コミット
f48525aa70
1 ファイル変更3 行追加3 行削除
  1. 3 3
      src/video/x11/SDL_x11xinput2.c

+ 3 - 3
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) {