From c3e06fe7414e98ad0f7244a098ee006a6c2e5e61 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" 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. (cherry picked from commit 958c4cbf0d77182254101670e01afd3b09207b7e) --- 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 1656255559..68c6ac59f4 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -1915,16 +1915,19 @@ static void Cocoa_SendMouseButtonClicks(SDL_Mouse *mouse, NSEvent *theEvent, SDL 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) {