Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
iOS 10: Work around screen bounds orientation bug. Fixes bugs #3465 and
- Loading branch information
Showing
with
27 additions
and
3 deletions.
-
+25
−2
src/video/uikit/SDL_uikitvideo.m
-
+2
−1
src/video/uikit/SDL_uikitviewcontroller.m
|
@@ -176,16 +176,39 @@ static void UIKit_DeleteDevice(SDL_VideoDevice * device) |
|
|
CGRect |
|
|
UIKit_ComputeViewFrame(SDL_Window *window, UIScreen *screen) |
|
|
{ |
|
|
CGRect frame = screen.bounds; |
|
|
|
|
|
#if !TARGET_OS_TV && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0) |
|
|
BOOL hasiOS7 = UIKit_IsSystemVersionAtLeast(7.0); |
|
|
|
|
|
/* The view should always show behind the status bar in iOS 7+. */ |
|
|
if (!hasiOS7 && !(window->flags & (SDL_WINDOW_BORDERLESS|SDL_WINDOW_FULLSCREEN))) { |
|
|
return screen.applicationFrame; |
|
|
frame = screen.applicationFrame; |
|
|
} |
|
|
#endif |
|
|
|
|
|
#if !TARGET_OS_TV |
|
|
/* iOS 10 seems to have a bug where, in certain conditions, putting the |
|
|
* device to sleep with the a landscape-only app open, re-orienting the |
|
|
* device to portrait, and turning it back on will result in the screen |
|
|
* bounds returning portrait orientation despite the app being in landscape. |
|
|
* This is a workaround until a better solution can be found. |
|
|
* https://bugzilla.libsdl.org/show_bug.cgi?id=3505 |
|
|
* https://bugzilla.libsdl.org/show_bug.cgi?id=3465 |
|
|
* https://forums.developer.apple.com/thread/65337 */ |
|
|
if (UIKit_IsSystemVersionAtLeast(8.0)) { |
|
|
UIInterfaceOrientation orient = [UIApplication sharedApplication].statusBarOrientation; |
|
|
BOOL isLandscape = UIInterfaceOrientationIsLandscape(orient); |
|
|
|
|
|
if (isLandscape != (frame.size.width > frame.size.height)) { |
|
|
float height = frame.size.width; |
|
|
frame.size.width = frame.size.height; |
|
|
frame.size.height = height; |
|
|
} |
|
|
} |
|
|
#endif |
|
|
|
|
|
return screen.bounds; |
|
|
return frame; |
|
|
} |
|
|
|
|
|
/* |
|
|
|
@@ -293,8 +293,9 @@ - (void)keyboardWillShow:(NSNotification *)notification |
|
|
|
|
|
- (void)keyboardWillHide:(NSNotification *)notification |
|
|
{ |
|
|
if (!rotatingOrientation) |
|
|
if (!rotatingOrientation) { |
|
|
SDL_StopTextInput(); |
|
|
} |
|
|
[self setKeyboardHeight:0]; |
|
|
} |
|
|
|
|
|