From 900627f7fc3ad7bb92dae878c6d7c4d44dc50b53 Mon Sep 17 00:00:00 2001 From: Sam Lantinga 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 30d648f52a..873380bd0e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -1556,7 +1556,7 @@ static NSCursor *Cocoa_GetDesiredCursor(void) 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 c91ec59126..f6a1f029f7 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