Merge branch 'master' into bazel

This commit is contained in:
Ali
2020-02-18 03:43:19 +04:00
1232 changed files with 86593 additions and 21224 deletions

View File

@@ -125,8 +125,6 @@ open class NavigationController: UINavigationController, ContainableController,
private let mode: NavigationControllerMode
private var theme: NavigationControllerTheme
public private(set) weak var overlayPresentingController: ViewController?
var inCallNavigate: (() -> Void)?
private var inCallStatusBar: StatusBar?
private var globalScrollToTopNode: ScrollToTopNode?
@@ -134,8 +132,11 @@ open class NavigationController: UINavigationController, ContainableController,
private var rootModalFrame: NavigationModalFrame?
private var modalContainers: [NavigationModalContainer] = []
private var overlayContainers: [NavigationOverlayContainer] = []
private var globalOverlayContainers: [NavigationOverlayContainer] = []
private var globalOverlayContainerParent: GlobalOverlayContainerParent?
public var globalOverlayControllersUpdated: (() -> Void)?
private var validLayout: ContainerViewLayout?
private var validStatusBarStyle: NavigationStatusBarStyle?
private var validStatusBarHidden: Bool = false
@@ -190,6 +191,8 @@ open class NavigationController: UINavigationController, ContainableController,
}
var keyboardViewManager: KeyboardViewManager?
var updateSupportedOrientations: (() -> Void)?
public func updateMasterDetailsBlackout(_ blackout: MasterDetailLayoutBlackout?, transition: ContainedViewLayoutTransition) {
self.masterDetailsBlackout = blackout
if isViewLoaded {
@@ -268,6 +271,18 @@ open class NavigationController: UINavigationController, ContainableController,
return true
}
}
if let rootContainer = self.rootContainer {
switch rootContainer {
case let .flat(container):
if container.hasNonReadyControllers() {
return true
}
case let .split(splitContainer):
if splitContainer.hasNonReadyControllers() {
return true
}
}
}
return false
}
@@ -448,6 +463,9 @@ open class NavigationController: UINavigationController, ContainableController,
var topVisibleOverlayContainerWithStatusBar: NavigationOverlayContainer?
var notifyGlobalOverlayControllersUpdated = false
var modalStyleOverlayTransitionFactor: CGFloat = 0.0
var previousGlobalOverlayContainer: NavigationOverlayContainer?
for i in (0 ..< self.globalOverlayContainers.count).reversed() {
let overlayContainer = self.globalOverlayContainers[i]
@@ -462,6 +480,8 @@ open class NavigationController: UINavigationController, ContainableController,
containerTransition.updateFrame(node: overlayContainer, frame: CGRect(origin: CGPoint(), size: overlayLayout.size))
overlayContainer.update(layout: overlayLayout, transition: containerTransition)
modalStyleOverlayTransitionFactor = max(modalStyleOverlayTransitionFactor, overlayContainer.controller.modalStyleOverlayTransitionFactor)
if overlayContainer.supernode == nil && overlayContainer.isReady {
if let previousGlobalOverlayContainer = previousGlobalOverlayContainer {
self.globalOverlayContainerParent?.insertSubnode(overlayContainer, belowSubnode: previousGlobalOverlayContainer)
@@ -469,6 +489,7 @@ open class NavigationController: UINavigationController, ContainableController,
self.globalOverlayContainerParent?.addSubnode(overlayContainer)
}
overlayContainer.transitionIn()
notifyGlobalOverlayControllersUpdated = true
}
if overlayContainer.supernode != nil {
@@ -504,6 +525,8 @@ open class NavigationController: UINavigationController, ContainableController,
containerTransition.updateFrame(node: overlayContainer, frame: CGRect(origin: CGPoint(), size: layout.size))
overlayContainer.update(layout: layout, transition: containerTransition)
modalStyleOverlayTransitionFactor = max(modalStyleOverlayTransitionFactor, overlayContainer.controller.modalStyleOverlayTransitionFactor)
if overlayContainer.supernode == nil && overlayContainer.isReady {
if let previousOverlayContainer = previousOverlayContainer {
self.displayNode.insertSubnode(overlayContainer, belowSubnode: previousOverlayContainer)
@@ -740,12 +763,14 @@ open class NavigationController: UINavigationController, ContainableController,
}
}
topModalDismissProgress = max(topModalDismissProgress, modalStyleOverlayTransitionFactor)
switch layout.metrics.widthClass {
case .compact:
if visibleModalCount != 0 {
if visibleModalCount != 0 || !modalStyleOverlayTransitionFactor.isZero {
let effectiveRootModalDismissProgress: CGFloat
let visibleRootModalDismissProgress: CGFloat
let additionalModalFrameProgress: CGFloat
var additionalModalFrameProgress: CGFloat
if visibleModalCount == 1 {
effectiveRootModalDismissProgress = topModalIsFlat ? 1.0 : topModalDismissProgress
visibleRootModalDismissProgress = effectiveRootModalDismissProgress
@@ -755,9 +780,13 @@ open class NavigationController: UINavigationController, ContainableController,
visibleRootModalDismissProgress = topModalDismissProgress
additionalModalFrameProgress = 1.0 - topModalDismissProgress
} else {
effectiveRootModalDismissProgress = 0.0
effectiveRootModalDismissProgress = 1.0 - modalStyleOverlayTransitionFactor
visibleRootModalDismissProgress = effectiveRootModalDismissProgress
additionalModalFrameProgress = 1.0
if visibleModalCount == 0 {
additionalModalFrameProgress = 0.0
} else {
additionalModalFrameProgress = 1.0
}
}
let rootModalFrame: NavigationModalFrame
@@ -813,7 +842,7 @@ open class NavigationController: UINavigationController, ContainableController,
if topModalIsFlat {
maxScale = 1.0
maxOffset = 0.0
} else if visibleModalCount == 1 {
} else if visibleModalCount <= 1 {
maxScale = (layout.size.width - 16.0 * 2.0) / layout.size.width
maxOffset = (topInset - (layout.size.height - layout.size.height * maxScale) / 2.0)
} else {
@@ -823,7 +852,7 @@ open class NavigationController: UINavigationController, ContainableController,
let scale = 1.0 * visibleRootModalDismissProgress + (1.0 - visibleRootModalDismissProgress) * maxScale
let offset = (1.0 - visibleRootModalDismissProgress) * maxOffset
transition.updateSublayerTransformScaleAndOffset(node: rootContainerNode, scale: scale, offset: CGPoint(x: 0.0, y: offset))
transition.updateSublayerTransformScaleAndOffset(node: rootContainerNode, scale: scale, offset: CGPoint(x: 0.0, y: offset), beginWithCurrentState: true)
}
} else {
if let rootModalFrame = self.rootModalFrame {
@@ -906,6 +935,12 @@ open class NavigationController: UINavigationController, ContainableController,
}
self.isUpdatingContainers = false
if notifyGlobalOverlayControllersUpdated {
self.globalOverlayControllersUpdated?()
}
self.updateSupportedOrientations?()
}
private func controllerRemoved(_ controller: ViewController) {
@@ -975,27 +1010,8 @@ open class NavigationController: UINavigationController, ContainableController,
}
public func pushViewController(_ controller: ViewController, animated: Bool = true, completion: @escaping () -> Void) {
let navigateAction: () -> Void = { [weak self] in
guard let strongSelf = self else {
return
}
if !controller.hasActiveInput {
//strongSelf.view.endEditing(true)
}
/*strongSelf.scheduleAfterLayout({
guard let strongSelf = self else {
return
}*/
strongSelf.pushViewController(controller, animated: animated)
completion()
//})
}
/*if let lastController = self.viewControllers.last as? ViewController, !lastController.attemptNavigation(navigateAction) {
} else {*/
navigateAction()
//}
self.pushViewController(controller, animated: animated)
completion()
}
open override func pushViewController(_ viewController: UIViewController, animated: Bool) {
@@ -1117,6 +1133,7 @@ open class NavigationController: UINavigationController, ContainableController,
if overlayContainer.controller === controller {
overlayContainer.removeFromSupernode()
strongSelf.globalOverlayContainers.remove(at: i)
strongSelf.globalOverlayControllersUpdated?()
break
}
}
@@ -1136,6 +1153,11 @@ open class NavigationController: UINavigationController, ContainableController,
return
}
strongSelf.updateContainersNonReentrant(transition: transition)
}, modalStyleOverlayTransitionFactorUpdated: { [weak self] transition in
guard let strongSelf = self else {
return
}
strongSelf.updateContainersNonReentrant(transition: transition)
})
if inGlobal {
self.globalOverlayContainers.append(container)
@@ -1273,4 +1295,24 @@ open class NavigationController: UINavigationController, ContainableController,
}
}
}
public var overlayControllers: [ViewController] {
return self.overlayContainers.compactMap { container in
if container.isReady {
return container.controller
} else {
return nil
}
}
}
public var globalOverlayControllers: [ViewController] {
return self.globalOverlayContainers.compactMap { container in
if container.isReady {
return container.controller
} else {
return nil
}
}
}
}