mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Various improvements
This commit is contained in:
@@ -12,6 +12,7 @@ struct ModalContainerLayout {
|
||||
var controllers: [ViewController]
|
||||
var isFlat: Bool
|
||||
var isStandalone: Bool
|
||||
var isMinimized: Bool
|
||||
}
|
||||
|
||||
struct NavigationLayout {
|
||||
@@ -19,7 +20,7 @@ struct NavigationLayout {
|
||||
var modal: [ModalContainerLayout]
|
||||
}
|
||||
|
||||
func makeNavigationLayout(mode: NavigationControllerMode, layout: ContainerViewLayout, controllers: [ViewController]) -> NavigationLayout {
|
||||
func makeNavigationLayout(mode: NavigationControllerMode, layout: ContainerViewLayout, controllers: [ViewController], minimizedControllers: [ViewController]) -> NavigationLayout {
|
||||
var rootControllers: [ViewController] = []
|
||||
var modalStack: [ModalContainerLayout] = []
|
||||
for controller in controllers {
|
||||
@@ -54,7 +55,7 @@ func makeNavigationLayout(mode: NavigationControllerMode, layout: ContainerViewL
|
||||
if requiresModal {
|
||||
controller._presentedInModal = true
|
||||
if beginsModal || modalStack.isEmpty || modalStack[modalStack.count - 1].isStandalone {
|
||||
modalStack.append(ModalContainerLayout(controllers: [controller], isFlat: isFlat, isStandalone: isStandalone))
|
||||
modalStack.append(ModalContainerLayout(controllers: [controller], isFlat: isFlat, isStandalone: isStandalone, isMinimized: false))
|
||||
} else {
|
||||
modalStack[modalStack.count - 1].controllers.append(controller)
|
||||
}
|
||||
@@ -64,7 +65,7 @@ func makeNavigationLayout(mode: NavigationControllerMode, layout: ContainerViewL
|
||||
controller._presentedInModal = true
|
||||
}
|
||||
if modalStack[modalStack.count - 1].isStandalone {
|
||||
modalStack.append(ModalContainerLayout(controllers: [controller], isFlat: isFlat, isStandalone: isStandalone))
|
||||
modalStack.append(ModalContainerLayout(controllers: [controller], isFlat: isFlat, isStandalone: isStandalone, isMinimized: false))
|
||||
} else {
|
||||
modalStack[modalStack.count - 1].controllers.append(controller)
|
||||
}
|
||||
@@ -73,6 +74,23 @@ func makeNavigationLayout(mode: NavigationControllerMode, layout: ContainerViewL
|
||||
rootControllers.append(controller)
|
||||
}
|
||||
}
|
||||
|
||||
var minimizedModalContainer: ModalContainerLayout?
|
||||
for controller in minimizedControllers {
|
||||
controller._presentedInModal = false
|
||||
if var container = minimizedModalContainer {
|
||||
container.controllers.append(controller)
|
||||
minimizedModalContainer = container
|
||||
} else {
|
||||
let container = ModalContainerLayout(controllers: [controller], isFlat: false, isStandalone: false, isMinimized: true)
|
||||
minimizedModalContainer = container
|
||||
}
|
||||
}
|
||||
|
||||
if let minimizedModalContainer {
|
||||
modalStack.insert(minimizedModalContainer, at: 0)
|
||||
}
|
||||
|
||||
let rootLayout: RootNavigationLayout
|
||||
switch mode {
|
||||
case .single:
|
||||
|
||||
Reference in New Issue
Block a user