From 6bfe0f0418df97b00fd9ee3fffa02b5b40a293d6 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 1 Feb 2019 10:22:33 -0500 Subject: [PATCH] Ensure 'link new device' view is portrait. --- .../categories/UIViewController+OWS.m | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/SignalMessaging/categories/UIViewController+OWS.m b/SignalMessaging/categories/UIViewController+OWS.m index eb923067f..04c1ba1d8 100644 --- a/SignalMessaging/categories/UIViewController+OWS.m +++ b/SignalMessaging/categories/UIViewController+OWS.m @@ -15,11 +15,19 @@ NS_ASSUME_NONNULL_BEGIN - (UIViewController *)findFrontmostViewController:(BOOL)ignoringAlerts { + NSMutableArray *visitedViewControllers = [NSMutableArray new]; + UIViewController *viewController = self; while (YES) { + [visitedViewControllers addObject:viewController]; + UIViewController *_Nullable nextViewController = viewController.presentedViewController; if (nextViewController) { if (!ignoringAlerts || ![nextViewController isKindOfClass:[UIAlertController class]]) { + if ([visitedViewControllers containsObject:nextViewController]) { + // Cycle detected. + return viewController; + } viewController = nextViewController; continue; } @@ -27,8 +35,13 @@ NS_ASSUME_NONNULL_BEGIN if ([viewController isKindOfClass:[UINavigationController class]]) { UINavigationController *navigationController = (UINavigationController *)viewController; - if (navigationController.topViewController) { - viewController = navigationController.topViewController; + nextViewController = navigationController.topViewController; + if (nextViewController) { + if ([visitedViewControllers containsObject:nextViewController]) { + // Cycle detected. + return viewController; + } + viewController = nextViewController; } else { break; }