diff --git a/submodules/Display/Display/ContainableController.swift b/submodules/Display/Display/ContainableController.swift index f7b5351872..ad9eb30558 100644 --- a/submodules/Display/Display/ContainableController.swift +++ b/submodules/Display/Display/ContainableController.swift @@ -17,6 +17,7 @@ public protocol ContainableController: class { func combinedSupportedOrientations(currentOrientationToLock: UIInterfaceOrientationMask) -> ViewControllerSupportedOrientations var deferScreenEdgeGestures: UIRectEdge { get } + var prefersOnScreenNavigationHidden: Bool { get } func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) func updateToInterfaceOrientation(_ orientation: UIInterfaceOrientation) diff --git a/submodules/Display/Display/Navigation/NavigationController.swift b/submodules/Display/Display/Navigation/NavigationController.swift index 429db1abae..3f46605193 100644 --- a/submodules/Display/Display/Navigation/NavigationController.swift +++ b/submodules/Display/Display/Navigation/NavigationController.swift @@ -108,6 +108,9 @@ open class NavigationController: UINavigationController, ContainableController, public var lockOrientation: Bool = false public var deferScreenEdgeGestures: UIRectEdge = UIRectEdge() + public var prefersOnScreenNavigationHidden: Bool { + return (self.topViewController as? ViewController)?.prefersOnScreenNavigationHidden ?? false + } private let mode: NavigationControllerMode private var theme: NavigationControllerTheme @@ -153,6 +156,14 @@ open class NavigationController: UINavigationController, ContainableController, return self._viewControllers.last } + var topOverlayController: ViewController? { + if let overlayContainer = self.overlayContainers.last { + return overlayContainer.controller + } else { + return nil + } + } + private var _displayNode: ASDisplayNode? public var displayNode: ASDisplayNode { if let value = self._displayNode { diff --git a/submodules/Display/Display/WindowContent.swift b/submodules/Display/Display/WindowContent.swift index 92985f27db..e2d243143d 100644 --- a/submodules/Display/Display/WindowContent.swift +++ b/submodules/Display/Display/WindowContent.swift @@ -1210,7 +1210,11 @@ public class Window1 { } private func collectPrefersOnScreenNavigationHidden() -> Bool { - var hidden = self.presentationContext.combinedPrefersOnScreenNavigationHidden() + var hidden = false + if let navigationController = self._rootController as? NavigationController, let overlayController = navigationController.topOverlayController { + hidden = hidden || overlayController.prefersOnScreenNavigationHidden + } + hidden = hidden || self.presentationContext.combinedPrefersOnScreenNavigationHidden() for controller in self.topLevelOverlayControllers { if let controller = controller as? ViewController {