From 5adcbac5ef5272db8e143947b9602bce4aa182b5 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 8 Jan 2019 11:47:40 -0500 Subject: [PATCH] Landscape orientation. --- Signal/src/AppDelegate.m | 12 +++++++++++- .../ViewControllers/MenuActionsViewController.swift | 6 +++--- SignalMessaging/utils/OWSWindowManager.h | 3 ++- SignalMessaging/utils/OWSWindowManager.m | 11 ++++++++++- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 8ae4c2cf5..5a333e2f9 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "AppDelegate.h" @@ -946,6 +946,16 @@ static NSTimeInterval launchStartedAt; - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window { + if (!window) { + // If `window` is nil, be permissive. Otherwise orientation + // gets messed up during presentation of windows. + return UIInterfaceOrientationMaskAllButUpsideDown; + } + + if (window == self.windowManager.menuActionsWindow) { + return UIInterfaceOrientationMaskAllButUpsideDown; + } + if (self.windowManager.rootWindow != window) { return UIInterfaceOrientationMaskPortrait; } diff --git a/Signal/src/ViewControllers/MenuActionsViewController.swift b/Signal/src/ViewControllers/MenuActionsViewController.swift index 8d16c123d..3019edf69 100644 --- a/Signal/src/ViewControllers/MenuActionsViewController.swift +++ b/Signal/src/ViewControllers/MenuActionsViewController.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // import Foundation @@ -92,8 +92,8 @@ class MenuActionsViewController: UIViewController, MenuActionSheetDelegate { // MARK: Orientation - override var supportedInterfaceOrientations: UIInterfaceOrientationMask { - return .portrait + override public var supportedInterfaceOrientations: UIInterfaceOrientationMask { + return .allButUpsideDown } // MARK: Present / Dismiss animations diff --git a/SignalMessaging/utils/OWSWindowManager.h b/SignalMessaging/utils/OWSWindowManager.h index 2ae99cad8..280159e35 100644 --- a/SignalMessaging/utils/OWSWindowManager.h +++ b/SignalMessaging/utils/OWSWindowManager.h @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // NS_ASSUME_NONNULL_BEGIN @@ -27,6 +27,7 @@ extern const UIWindowLevel UIWindowLevel_Background; - (void)setupWithRootWindow:(UIWindow *)rootWindow screenBlockingWindow:(UIWindow *)screenBlockingWindow; @property (nonatomic, readonly) UIWindow *rootWindow; +@property (nonatomic, readonly) UIWindow *menuActionsWindow; - (void)setIsScreenBlockActive:(BOOL)isScreenBlockActive; diff --git a/SignalMessaging/utils/OWSWindowManager.m b/SignalMessaging/utils/OWSWindowManager.m index d346e128a..e5afcc115 100644 --- a/SignalMessaging/utils/OWSWindowManager.m +++ b/SignalMessaging/utils/OWSWindowManager.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "OWSWindowManager.h" @@ -65,11 +65,14 @@ const UIWindowLevel UIWindowLevel_MessageActions(void) return CGFLOAT_MAX - 100; } +#pragma mark - @interface MessageActionsWindow : UIWindow @end +#pragma mark - + @implementation MessageActionsWindow - (UIWindowLevel)windowLevel @@ -83,6 +86,8 @@ const UIWindowLevel UIWindowLevel_MessageActions(void) @end +#pragma mark - + @implementation OWSWindowRootViewController - (BOOL)canBecomeFirstResponder @@ -99,10 +104,14 @@ const UIWindowLevel UIWindowLevel_MessageActions(void) @end +#pragma mark - + @interface OWSWindowRootNavigationViewController : UINavigationController @end +#pragma mark - + @implementation OWSWindowRootNavigationViewController : UINavigationController #pragma mark - Orientation