diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 549c00a1f..6ecf5c0c1 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -957,6 +957,15 @@ static NSTimeInterval launchStartedAt; return UIInterfaceOrientationMaskAllButUpsideDown; } + if (![self.windowManager isAppWindow:window]) { + // iOS uses various windows for animations, transitions, etc. + // e.g. _UIInteractiveHighlightEffectWindow, + // UITextEffectsWindow. + // + // We should be permissive with these windows. + return UIInterfaceOrientationMaskAllButUpsideDown; + } + if (window == self.windowManager.menuActionsWindow) { return UIInterfaceOrientationMaskAllButUpsideDown; } diff --git a/SignalMessaging/utils/OWSWindowManager.h b/SignalMessaging/utils/OWSWindowManager.h index 280159e35..cfebd30d7 100644 --- a/SignalMessaging/utils/OWSWindowManager.h +++ b/SignalMessaging/utils/OWSWindowManager.h @@ -31,6 +31,8 @@ extern const UIWindowLevel UIWindowLevel_Background; - (void)setIsScreenBlockActive:(BOOL)isScreenBlockActive; +- (BOOL)isAppWindow:(UIWindow *)window; + #pragma mark - Message Actions @property (nonatomic, readonly) BOOL isPresentingMenuActions; diff --git a/SignalMessaging/utils/OWSWindowManager.m b/SignalMessaging/utils/OWSWindowManager.m index e5afcc115..ff8d1888d 100644 --- a/SignalMessaging/utils/OWSWindowManager.m +++ b/SignalMessaging/utils/OWSWindowManager.m @@ -310,6 +310,14 @@ const UIWindowLevel UIWindowLevel_MessageActions(void) [self ensureWindowState]; } +- (BOOL)isAppWindow:(UIWindow *)window +{ + OWSAssertDebug(window); + + return (window == self.rootWindow || window == self.returnToCallWindow || window == self.callViewWindow + || window == self.menuActionsWindow || window == self.screenBlockingWindow); +} + #pragma mark - Message Actions - (BOOL)isPresentingMenuActions