diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift index 73fc9515e6..f7af875c4e 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift @@ -96,6 +96,32 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { let emptySize = self.emptyNode.updateLayout(size) transition.updateFrame(node: self.emptyNode, frame: CGRect(origin: CGPoint(x: floor(size.width - emptySize.width) / 2.0, y: topInset + floor(size.height - topInset - emptySize.height) / 2.0), size: emptySize)) + self.updateMultiplexedNodeLayout(changedIsExpanded: changedIsExpanded, transition: transition) + } + + func fileAt(point: CGPoint) -> (FileMediaReference, CGRect)? { + if let multiplexedNode = self.multiplexedNode { + return multiplexedNode.fileAt(point: point.offsetBy(dx: -multiplexedNode.frame.minX, dy: -multiplexedNode.frame.minY)) + } else { + return nil + } + } + + override var isEmpty: Bool { + return self.multiplexedNode?.files.isEmpty ?? true + } + + override func willEnterHierarchy() { + super.willEnterHierarchy() + + self.initializeIfNeeded() + } + + private func updateMultiplexedNodeLayout(changedIsExpanded: Bool, transition: ContainedViewLayoutTransition) { + guard let (size, topInset, bottomInset, isExpanded, isVisible, deviceMetrics) = self.validLayout else { + return + } + if let multiplexedNode = self.multiplexedNode { let previousBounds = multiplexedNode.scrollNode.layer.bounds multiplexedNode.topInset = topInset + 60.0 @@ -122,24 +148,6 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { } } - func fileAt(point: CGPoint) -> (FileMediaReference, CGRect)? { - if let multiplexedNode = self.multiplexedNode { - return multiplexedNode.fileAt(point: point.offsetBy(dx: -multiplexedNode.frame.minX, dy: -multiplexedNode.frame.minY)) - } else { - return nil - } - } - - override var isEmpty: Bool { - return self.multiplexedNode?.files.isEmpty ?? true - } - - override func willEnterHierarchy() { - super.willEnterHierarchy() - - self.initializeIfNeeded() - } - func initializeIfNeeded() { if self.multiplexedNode == nil { self.trendingPromise.set(paneGifSearchForQuery(account: account, query: "", updateActivity: nil)) @@ -215,6 +223,8 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { fixListScrolling(multiplexedNode) } } + + self.updateMultiplexedNodeLayout(changedIsExpanded: false, transition: .immediate) } } } diff --git a/submodules/TelegramUI/TelegramUI/MultiplexedVideoNode.swift b/submodules/TelegramUI/TelegramUI/MultiplexedVideoNode.swift index 5652a4560f..d44fa7cf3a 100644 --- a/submodules/TelegramUI/TelegramUI/MultiplexedVideoNode.swift +++ b/submodules/TelegramUI/TelegramUI/MultiplexedVideoNode.swift @@ -61,7 +61,9 @@ final class MultiplexedVideoNode: ASDisplayNode, UIScrollViewDelegate { var files: [FileMediaReference] = [] { didSet { + let startTime = CFAbsoluteTimeGetCurrent() self.updateVisibleItems() + print("MultiplexedVideoNode files updateVisibleItems: \((CFAbsoluteTimeGetCurrent() - startTime) * 1000.0) ms") } } private var displayItems: [VisibleVideoItem] = [] @@ -219,7 +221,9 @@ final class MultiplexedVideoNode: ASDisplayNode, UIScrollViewDelegate { self.validSize = size self.contextContainerNode.frame = CGRect(origin: CGPoint(), size: size) self.scrollNode.frame = CGRect(origin: CGPoint(), size: size) + let startTime = CFAbsoluteTimeGetCurrent() self.updateVisibleItems(transition: transition) + print("MultiplexedVideoNode layout updateVisibleItems: \((CFAbsoluteTimeGetCurrent() - startTime) * 1000.0) ms") } } @@ -465,7 +469,7 @@ final class MultiplexedVideoNode: ASDisplayNode, UIScrollViewDelegate { @objc func tapGesture(_ recognizer: TapLongTapOrDoubleTapGestureRecognizer) { if case .ended = recognizer.state { let point = recognizer.location(in: self.view) - if let (file, rect) = self.offsetFileAt(point: point) { + if let (file, rect) = self.fileAt(point: point) { self.fileSelected?(file, self, rect) } }