From 900627f7fc3ad7bb92dae878c6d7c4d44dc50b53 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 6 Dec 2024 17:06:26 -0800
Subject: [PATCH] Enable the SDL_HINT_MOUSE_DOUBLE_CLICK_TIME and
SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS hints on macOS
Fixes https://github.com/libsdl-org/SDL/issues/4000
---
src/video/cocoa/SDL_cocoawindow.m | 8 +++++---
test/testwm.c | 2 ++
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
index 30d648f52a264..873380bd0e1fe 100644
--- a/src/video/cocoa/SDL_cocoawindow.m
+++ b/src/video/cocoa/SDL_cocoawindow.m
@@ -1556,7 +1556,7 @@ - (BOOL)processHitTest:(NSEvent *)theEvent
static void Cocoa_SendMouseButtonClicks(SDL_Mouse *mouse, NSEvent *theEvent, SDL_Window *window, Uint8 button, bool down)
{
SDL_MouseID mouseID = SDL_DEFAULT_MOUSE_ID;
- const int clicks = (int)[theEvent clickCount];
+ //const int clicks = (int)[theEvent clickCount];
SDL_Window *focus = SDL_GetKeyboardFocus();
// macOS will send non-left clicks to background windows without raising them, so we need to
@@ -1565,14 +1565,16 @@ static void Cocoa_SendMouseButtonClicks(SDL_Mouse *mouse, NSEvent *theEvent, SDL
// event for the background window, this just makes sure the button is reported at the
// correct position in its own event.
if (focus && ([theEvent window] == ((__bridge SDL_CocoaWindowData *)focus->internal).nswindow)) {
- SDL_SendMouseButtonClicks(Cocoa_GetEventTimestamp([theEvent timestamp]), window, mouseID, button, down, clicks);
+ //SDL_SendMouseButtonClicks(Cocoa_GetEventTimestamp([theEvent timestamp]), window, mouseID, button, down, clicks);
+ SDL_SendMouseButton(Cocoa_GetEventTimestamp([theEvent timestamp]), window, mouseID, button, down);
} else {
const float orig_x = mouse->x;
const float orig_y = mouse->y;
const NSPoint point = [theEvent locationInWindow];
mouse->x = (int)point.x;
mouse->y = (int)(window->h - point.y);
- SDL_SendMouseButtonClicks(Cocoa_GetEventTimestamp([theEvent timestamp]), window, mouseID, button, down, clicks);
+ //SDL_SendMouseButtonClicks(Cocoa_GetEventTimestamp([theEvent timestamp]), window, mouseID, button, down, clicks);
+ SDL_SendMouseButton(Cocoa_GetEventTimestamp([theEvent timestamp]), window, mouseID, button, down);
mouse->x = orig_x;
mouse->y = orig_y;
}
diff --git a/test/testwm.c b/test/testwm.c
index c91ec591267c6..f6a1f029f709c 100644
--- a/test/testwm.c
+++ b/test/testwm.c
@@ -277,6 +277,8 @@ int main(int argc, char *argv[])
SDL_RenderClear(renderer);
}
+SDL_StopTextInput(state->windows[0]);
+SDL_StopTextInput(state->windows[0]);
/* Main render loop */
done = 0;
#ifdef SDL_PLATFORM_EMSCRIPTEN