SDL: cocoa: Always add a window-sized NSTrackingArea to each window.

From 47717f22fd8bf38973c1de15a72df63575388480 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Sat, 31 May 2025 15:00:56 -0400
Subject: [PATCH] cocoa: Always add a window-sized NSTrackingArea to each
 window.

Previously this was only done on older macOSes, but it seems to work on all
versions, afaict.

Reference Issue #12725.
---
 src/video/cocoa/SDL_cocoawindow.m | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
index 6d64e8ef1fd56..12135e5d91af3 100644
--- a/src/video/cocoa/SDL_cocoawindow.m
+++ b/src/video/cocoa/SDL_cocoawindow.m
@@ -2112,20 +2112,19 @@ - (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
     }
 }
 
+// NSTrackingArea is how Cocoa tells you when the mouse cursor has entered or
+//  left certain regions. We put one over our entire window so we know when
+//  it has "mouse focus."
 - (void)updateTrackingAreas
 {
     [super updateTrackingAreas];
 
-    if (@available(macOS 12.0, *)) {
-        // we (currently) use the tracking areas as a workaround for older macOSes, but we might be safe everywhere...
-    } else {
-        SDL_CocoaWindowData *windata = (__bridge SDL_CocoaWindowData *)_sdlWindow->internal;
-        if (_trackingArea) {
-            [self removeTrackingArea:_trackingArea];
-        }
-        _trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options:NSTrackingMouseEnteredAndExited|NSTrackingActiveAlways owner:windata.listener userInfo:nil];
-        [self addTrackingArea:_trackingArea];
+    SDL_CocoaWindowData *windata = (__bridge SDL_CocoaWindowData *)_sdlWindow->internal;
+    if (_trackingArea) {
+        [self removeTrackingArea:_trackingArea];
     }
+    _trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options:NSTrackingMouseEnteredAndExited|NSTrackingActiveAlways owner:windata.listener userInfo:nil];
+    [self addTrackingArea:_trackingArea];
 }
 @end