diff --git a/submodules/Display/Source/ContainerViewLayout.swift b/submodules/Display/Source/ContainerViewLayout.swift index 8325f28258..ba1894abd4 100644 --- a/submodules/Display/Source/ContainerViewLayout.swift +++ b/submodules/Display/Source/ContainerViewLayout.swift @@ -90,6 +90,10 @@ public struct ContainerViewLayout: Equatable { return ContainerViewLayout(size: self.size, metrics: self.metrics, deviceMetrics: self.deviceMetrics, intrinsicInsets: intrinsicInsets, safeInsets: self.safeInsets, additionalInsets: self.additionalInsets, statusBarHeight: self.statusBarHeight, inputHeight: self.inputHeight, inputHeightIsInteractivellyChanging: self.inputHeightIsInteractivellyChanging, inVoiceOver: self.inVoiceOver) } + public func withUpdatedAdditionalInsets(_ additionalInsets: UIEdgeInsets) -> ContainerViewLayout { + return ContainerViewLayout(size: self.size, metrics: self.metrics, deviceMetrics: self.deviceMetrics, intrinsicInsets: self.intrinsicInsets, safeInsets: self.safeInsets, additionalInsets: additionalInsets, statusBarHeight: self.statusBarHeight, inputHeight: self.inputHeight, inputHeightIsInteractivellyChanging: self.inputHeightIsInteractivellyChanging, inVoiceOver: self.inVoiceOver) + } + public func withUpdatedInputHeight(_ inputHeight: CGFloat?) -> ContainerViewLayout { return ContainerViewLayout(size: self.size, metrics: self.metrics, deviceMetrics: self.deviceMetrics, intrinsicInsets: self.intrinsicInsets, safeInsets: self.safeInsets, additionalInsets: self.additionalInsets, statusBarHeight: self.statusBarHeight, inputHeight: inputHeight, inputHeightIsInteractivellyChanging: self.inputHeightIsInteractivellyChanging, inVoiceOver: self.inVoiceOver) } diff --git a/submodules/Display/Source/Navigation/NavigationController.swift b/submodules/Display/Source/Navigation/NavigationController.swift index 7f7156e25d..dd7c033a3a 100644 --- a/submodules/Display/Source/Navigation/NavigationController.swift +++ b/submodules/Display/Source/Navigation/NavigationController.swift @@ -443,7 +443,20 @@ open class NavigationController: UINavigationController, ContainableController, globalScrollToTopNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -1.0), size: CGSize(width: layout.size.width, height: 1.0)) } - let overlayContainerLayout = layout + var overlayContainerLayout = layout + + var updatedSize = layout.size + var updatedIntrinsicInsets = layout.intrinsicInsets + var updatedAdditionalInsets = layout.additionalInsets + if let minimizedContainer = self.minimizedContainer { + if (layout.inputHeight ?? 0.0).isZero { + let minimizedContainerHeight = minimizedContainer.collapsedHeight(layout: layout) + updatedSize.height -= minimizedContainerHeight + updatedIntrinsicInsets.bottom = 0.0 + updatedAdditionalInsets.bottom += minimizedContainerHeight + } + } + overlayContainerLayout = overlayContainerLayout.withUpdatedAdditionalInsets(updatedAdditionalInsets) if let inCallStatusBar = self.inCallStatusBar { let isLandscape = layout.size.width > layout.size.height @@ -843,8 +856,6 @@ open class NavigationController: UINavigationController, ContainableController, layout.additionalInsets.left = max(layout.intrinsicInsets.left, additionalSideInsets.left) layout.additionalInsets.right = max(layout.intrinsicInsets.right, additionalSideInsets.right) - var updatedSize = layout.size - var updatedIntrinsicInsets = layout.intrinsicInsets if case .flat = navigationLayout.root, let minimizedContainer = self.minimizedContainer { if minimizedContainer.supernode !== self.displayNode { if let rootContainer = self.rootContainer, case let .flat(flatContainer) = rootContainer { @@ -857,10 +868,6 @@ open class NavigationController: UINavigationController, ContainableController, self.displayNode.insertSubnode(minimizedContainer, at: 0) } } - if (layout.inputHeight ?? 0.0).isZero { - updatedSize.height -= minimizedContainer.collapsedHeight(layout: layout) - updatedIntrinsicInsets.bottom = 0.0 - } } switch navigationLayout.root { diff --git a/submodules/TelegramUI/Components/VideoMessageCameraScreen/Sources/VideoMessageCameraScreen.swift b/submodules/TelegramUI/Components/VideoMessageCameraScreen/Sources/VideoMessageCameraScreen.swift index 2676399bd6..cd5491a460 100644 --- a/submodules/TelegramUI/Components/VideoMessageCameraScreen/Sources/VideoMessageCameraScreen.swift +++ b/submodules/TelegramUI/Components/VideoMessageCameraScreen/Sources/VideoMessageCameraScreen.swift @@ -1389,7 +1389,7 @@ public class VideoMessageCameraScreen: ViewController { } var backgroundFrame = CGRect(origin: .zero, size: CGSize(width: layout.size.width, height: controller.inputPanelFrame.0.minY)) - if backgroundFrame.maxY < layout.size.height - 100.0 && (layout.inputHeight ?? 0.0).isZero && !controller.inputPanelFrame.1 { + if backgroundFrame.maxY < layout.size.height - 100.0 && (layout.inputHeight ?? 0.0).isZero && !controller.inputPanelFrame.1 && layout.additionalInsets.bottom.isZero { backgroundFrame = CGRect(origin: .zero, size: CGSize(width: layout.size.width, height: layout.size.height - layout.intrinsicInsets.bottom - controller.inputPanelFrame.0.height)) }