summaryrefslogtreecommitdiff
path: root/sdl2.0.18-macos-ios.diff
blob: 8c14322635840beab7545b21dac38ec499816bdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c
index 539f17138..a5a5b00fd 100644
--- a/src/events/SDL_mouse.c
+++ b/src/events/SDL_mouse.c
@@ -709,8 +709,8 @@ SDL_SendMouseWheel(SDL_Window * window, SDL_MouseID mouseID, float x, float y, S
         event.type = SDL_MOUSEWHEEL;
         event.wheel.windowID = mouse->focus ? mouse->focus->id : 0;
         event.wheel.which = mouseID;
-        event.wheel.x = integral_x;
-        event.wheel.y = integral_y;
+        event.wheel.x = x; //integral_x;
+        event.wheel.y = y; //integral_y;
         event.wheel.preciseX = x;
         event.wheel.preciseY = y;
         event.wheel.direction = (Uint32)direction;
diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m
index e9d832d64..4cfa3624b 100644
--- a/src/video/cocoa/SDL_cocoamouse.m
+++ b/src/video/cocoa/SDL_cocoamouse.m
@@ -463,10 +463,16 @@ + (NSCursor *)invisibleCursor
     }
 
     SDL_MouseID mouseID = mouse->mouseID;
-    CGFloat x = -[event deltaX];
-    CGFloat y = [event deltaY];
+    CGFloat x = -[event scrollingDeltaX];
+    CGFloat y = [event scrollingDeltaY];
     SDL_MouseWheelDirection direction = SDL_MOUSEWHEEL_NORMAL;
 
+    /* HACK: Make a distinction between precise and imprecise scrolling.
+       Trackpad seems to be mouseID 0. */
+    if (![event hasPreciseScrollingDeltas]) {
+        mouseID = 1;
+    }
+
     if ([event respondsToSelector:@selector(isDirectionInvertedFromDevice)]) {
         if ([event isDirectionInvertedFromDevice] == YES) {
             direction = SDL_MOUSEWHEEL_FLIPPED;
diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h
index 489db169f..79a41dd50 100644
--- a/src/video/cocoa/SDL_cocoawindow.h
+++ b/src/video/cocoa/SDL_cocoawindow.h
@@ -110,6 +110,8 @@ typedef enum
 /* Touch event handling */
 -(void) handleTouches:(NSTouchPhase) phase withEvent:(NSEvent*) theEvent;
 
+-(void) syncMouseButtonAndKeyboardModifierState;
+
 @end
 /* *INDENT-ON* */
 
diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
index f09088c45..7379c2269 100644
--- a/src/video/cocoa/SDL_cocoawindow.m
+++ b/src/video/cocoa/SDL_cocoawindow.m
@@ -1236,6 +1236,25 @@ - (void)otherMouseDown:(NSEvent *)theEvent
     [self mouseDown:theEvent];
 }
 
+- (void)syncMouseButtonAndKeyboardModifierState {
+    SDL_Mouse *mouse = SDL_GetMouse();
+    if (mouse) {
+        for (int i = 0; i < mouse->num_sources; i++) {
+            if (mouse->sources[i].mouseID == mouse->mouseID) {
+                mouse->sources[i].buttonstate = 0;
+            }
+        }
+    }
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LGUI);
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RGUI);
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LSHIFT);
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RSHIFT);
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LCTRL);
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RCTRL);
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LALT);
+    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RALT);
+}
+
 - (void)mouseUp:(NSEvent *)theEvent
 {
     SDL_Mouse *mouse = SDL_GetMouse();
diff --git a/src/video/uikit/SDL_uikitviewcontroller.h b/src/video/uikit/SDL_uikitviewcontroller.h
index f7f4c9de6..50c72aad0 100644
--- a/src/video/uikit/SDL_uikitviewcontroller.h
+++ b/src/video/uikit/SDL_uikitviewcontroller.h
@@ -58,10 +58,13 @@
 #if !TARGET_OS_TV
 - (NSUInteger)supportedInterfaceOrientations;
 - (BOOL)prefersStatusBarHidden;
+- (void)setStatusStyle:(UIStatusBarStyle)style;
+- (UIStatusBarStyle)preferredStatusBarStyle;
 - (BOOL)prefersHomeIndicatorAutoHidden;
 - (UIRectEdge)preferredScreenEdgesDeferringSystemGestures;
 
 @property (nonatomic, assign) int homeIndicatorHidden;
+@property (nonatomic, assign) UIStatusBarStyle statusBarStyle;
 #endif
 
 #if SDL_IPHONE_KEYBOARD
diff --git a/src/video/uikit/SDL_uikitviewcontroller.m b/src/video/uikit/SDL_uikitviewcontroller.m
index b2db4037d..d39f8085c 100644
--- a/src/video/uikit/SDL_uikitviewcontroller.m
+++ b/src/video/uikit/SDL_uikitviewcontroller.m
@@ -105,6 +105,7 @@ - (instancetype)initWithSDLWindow:(SDL_Window *)_window
 #endif
 
 #if !TARGET_OS_TV
+        self.statusBarStyle = UIStatusBarStyleDefault;
         SDL_AddHintCallback(SDL_HINT_IOS_HIDE_HOME_INDICATOR,
                             SDL_HideHomeIndicatorHintChanged,
                             (__bridge void *) self);
@@ -230,6 +231,17 @@ - (BOOL)prefersHomeIndicatorAutoHidden
     return hidden;
 }
 
+- (void)setStatusStyle:(UIStatusBarStyle)style
+{
+    self.statusBarStyle = style;
+    [self setNeedsStatusBarAppearanceUpdate];
+}
+
+- (UIStatusBarStyle)preferredStatusBarStyle
+{
+    return self.statusBarStyle;
+}
+
 - (UIRectEdge)preferredScreenEdgesDeferringSystemGestures
 {
     if (self.homeIndicatorHidden >= 0) {