From c9d602307c4e062b480f857009aef6a048cf3bb5 Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
Date: Wed, 15 Jan 2025 15:14:04 -0500
Subject: [PATCH] cocoa: Only process hit tests on left clicks
Otherwise, right-click events over drag areas will be eaten.
---
src/video/cocoa/SDL_cocoawindow.m | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
index daa544f7a43c0..48cc065ec40ff 100644
--- a/src/video/cocoa/SDL_cocoawindow.m
+++ b/src/video/cocoa/SDL_cocoawindow.m
@@ -1668,11 +1668,6 @@ - (void)mouseDown:(NSEvent *)theEvent
}
}
- if ([self processHitTest:theEvent]) {
- SDL_SendWindowEvent(_data.window, SDL_EVENT_WINDOW_HIT_TEST, 0, 0);
- return; // dragging, drop event.
- }
-
switch ([theEvent buttonNumber]) {
case 0:
if (([theEvent modifierFlags] & NSEventModifierFlagControl) &&
@@ -1695,6 +1690,11 @@ - (void)mouseDown:(NSEvent *)theEvent
break;
}
+ if (button == SDL_BUTTON_LEFT && [self processHitTest:theEvent]) {
+ SDL_SendWindowEvent(_data.window, SDL_EVENT_WINDOW_HIT_TEST, 0, 0);
+ return; // dragging, drop event.
+ }
+
Cocoa_SendMouseButtonClicks(mouse, theEvent, _data.window, button, true);
}
@@ -1721,11 +1721,6 @@ - (void)mouseUp:(NSEvent *)theEvent
return;
}
- if ([self processHitTest:theEvent]) {
- SDL_SendWindowEvent(_data.window, SDL_EVENT_WINDOW_HIT_TEST, 0, 0);
- return; // stopped dragging, drop event.
- }
-
switch ([theEvent buttonNumber]) {
case 0:
if (wasCtrlLeft) {
@@ -1746,6 +1741,11 @@ - (void)mouseUp:(NSEvent *)theEvent
break;
}
+ if (button == SDL_BUTTON_LEFT && [self processHitTest:theEvent]) {
+ SDL_SendWindowEvent(_data.window, SDL_EVENT_WINDOW_HIT_TEST, 0, 0);
+ return; // stopped dragging, drop event.
+ }
+
Cocoa_SendMouseButtonClicks(mouse, theEvent, _data.window, button, false);
}