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) {