diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-09-26 06:40:05 +0300 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-09-26 06:40:05 +0300 |
commit | b6c2742f6beb0bc162ea9fdc43050e14c784eb33 (patch) | |
tree | 99fcdf91d9dd139f6ef1a1fc25ea25e9923b3525 /sdl2-macos-ios.diff | |
parent | 6b918195fdb3ce77a26821b780358ede5746d089 (diff) |
macOS: Context menu consumes modifier key releases
Diffstat (limited to 'sdl2-macos-ios.diff')
-rw-r--r-- | sdl2-macos-ios.diff | 18 |
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; |
39 | diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h | 39 | diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h |
40 | index 37bec665e..5e3a3995f 100644 | 40 | index 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 | ||
52 | diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m | 52 | diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m |
53 | index 7a1446f09..86db35600 100644 | 53 | index 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 |