From 958c4cbf0d77182254101670e01afd3b09207b7e Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Mon, 3 Aug 2026 02:19:24 -0400
Subject: [PATCH] cocoa: Use macOS 26.x mouse workaround for all windows, not
just fullscreen.
This is a temporary workaround until we understand the issue better.
Reference Issue #15967.
---
src/video/cocoa/SDL_cocoawindow.m | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
index 0f59b6f436c0c..c50f6645b0c91 100644
--- a/src/video/cocoa/SDL_cocoawindow.m
+++ b/src/video/cocoa/SDL_cocoawindow.m
@@ -1920,16 +1920,19 @@ - (void)mouseMoved:(NSEvent *)theEvent
y = (window->h - point.y);
// On macOS 26 if you move away from a space and then back, mouse motion events will have incorrect
- // values at the top of the screen. The global mouse position query is still correct, so we'll fall
- // back to that until this is fixed by Apple. Mouse button events are interestingly not affected.
+ // values at the top of the screen. Apparently non-fullscreen windows suffer from this from time
+ // to time when mouse leaves/enters a window and/or focus changes, too. The global mouse position query
+ // is still correct, so we'll fall back to that until this is fixed by Apple. Mouse button events are
+ // interestingly not affected.
if (@available(macOS 26.0, *)) {
- if ([_data.listener isInFullscreenSpace]) {
+ // do for all windows for now, not just fullscreen spaces. And hopefully remove this code entirely soon.
+ //if ([_data.listener isInFullscreenSpace]) {
int posx = 0, posy = 0;
SDL_GetWindowPosition(window, &posx, &posy);
SDL_GetGlobalMouseState(&x, &y);
x -= posx;
y -= posy;
- }
+ //}
}
if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_13_2) {