فهرست منبع

windows: Catch WM_POINTERCAPTURECHANGED events.

Fixes #11844.
Ryan C. Gordon 3 ماه پیش
والد
کامیت
0180ca541e
1فایلهای تغییر یافته به همراه5 افزوده شده و 1 حذف شده
  1. 5 1
      src/video/windows/SDL_windowsevents.c

+ 5 - 1
src/video/windows/SDL_windowsevents.c

@@ -94,6 +94,9 @@
 #ifndef WM_POINTERLEAVE
 #define WM_POINTERLEAVE 0x024A
 #endif
+#ifndef WM_POINTERCAPTURECHANGED
+#define WM_POINTERCAPTURECHANGED 0x024C
+#endif
 #ifndef WM_UNICHAR
 #define WM_UNICHAR 0x0109
 #endif
@@ -1163,6 +1166,7 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
         returnCode = 0;
     } break;
 
+    case WM_POINTERCAPTURECHANGED:
     case WM_POINTERLEAVE:
     {
         const UINT32 pointerid = GET_POINTERID_WPARAM(wParam);
@@ -1173,7 +1177,7 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
         }
 
         // if this just left the _window_, we don't care. If this is no longer visible to the tablet, time to remove it!
-        if (!IS_POINTER_INCONTACT_WPARAM(wParam)) {
+        if ((msg == WM_POINTERCAPTURECHANGED) || !IS_POINTER_INCONTACT_WPARAM(wParam)) {
             SDL_RemovePenDevice(WIN_GetEventTimestamp(), pen);
         }
         returnCode = 0;