summaryrefslogtreecommitdiff
path: root/sdl2-macos-ios.diff
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2021-09-26 06:40:05 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2021-09-26 06:40:05 +0300
commitb6c2742f6beb0bc162ea9fdc43050e14c784eb33 (patch)
tree99fcdf91d9dd139f6ef1a1fc25ea25e9923b3525 /sdl2-macos-ios.diff
parent6b918195fdb3ce77a26821b780358ede5746d089 (diff)
macOS: Context menu consumes modifier key releases
Diffstat (limited to 'sdl2-macos-ios.diff')
-rw-r--r--sdl2-macos-ios.diff18
1 files changed, 13 insertions, 5 deletions
diff --git a/sdl2-macos-ios.diff b/sdl2-macos-ios.diff
index ecb23824..62178f63 100644
--- a/sdl2-macos-ios.diff
+++ b/sdl2-macos-ios.diff
@@ -37,31 +37,39 @@ index e9d832d64..4cfa3624b 100644
37 if ([event isDirectionInvertedFromDevice] == YES) { 37 if ([event isDirectionInvertedFromDevice] == YES) {
38 direction = SDL_MOUSEWHEEL_FLIPPED; 38 direction = SDL_MOUSEWHEEL_FLIPPED;
39diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h 39diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h
40index 37bec665e..5e3a3995f 100644 40index 37bec665e..9b2f0510c 100644
41--- a/src/video/cocoa/SDL_cocoawindow.h 41--- a/src/video/cocoa/SDL_cocoawindow.h
42+++ b/src/video/cocoa/SDL_cocoawindow.h 42+++ b/src/video/cocoa/SDL_cocoawindow.h
43@@ -109,6 +109,8 @@ typedef enum 43@@ -109,6 +109,8 @@ typedef enum
44 /* Touch event handling */ 44 /* Touch event handling */
45 -(void) handleTouches:(NSTouchPhase) phase withEvent:(NSEvent*) theEvent; 45 -(void) handleTouches:(NSTouchPhase) phase withEvent:(NSEvent*) theEvent;
46 46
47+-(void) syncMouseButtonState; 47+-(void) syncMouseButtonAndKeyboardModifierState;
48+ 48+
49 @end 49 @end
50 /* *INDENT-ON* */ 50 /* *INDENT-ON* */
51 51
52diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m 52diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
53index 7a1446f09..86db35600 100644 53index 7a1446f09..a6da2f9d7 100644
54--- a/src/video/cocoa/SDL_cocoawindow.m 54--- a/src/video/cocoa/SDL_cocoawindow.m
55+++ b/src/video/cocoa/SDL_cocoawindow.m 55+++ b/src/video/cocoa/SDL_cocoawindow.m
56@@ -1073,6 +1073,13 @@ - (void)otherMouseDown:(NSEvent *)theEvent 56@@ -1073,6 +1073,21 @@ - (void)otherMouseDown:(NSEvent *)theEvent
57 [self mouseDown:theEvent]; 57 [self mouseDown:theEvent];
58 } 58 }
59 59
60+- (void)syncMouseButtonState { 60+- (void)syncMouseButtonAndKeyboardModifierState {
61+ SDL_Mouse *mouse = SDL_GetMouse(); 61+ SDL_Mouse *mouse = SDL_GetMouse();
62+ if (mouse) { 62+ if (mouse) {
63+ mouse->buttonstate = SDL_GetGlobalMouseState(NULL, NULL); 63+ mouse->buttonstate = SDL_GetGlobalMouseState(NULL, NULL);
64+ } 64+ }
65+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LGUI);
66+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RGUI);
67+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LSHIFT);
68+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RSHIFT);
69+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LCTRL);
70+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RCTRL);
71+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LALT);
72+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RALT);
65+} 73+}
66+ 74+
67 - (void)mouseUp:(NSEvent *)theEvent 75 - (void)mouseUp:(NSEvent *)theEvent