diff --git a/submodules/Display/Source/ListView.swift b/submodules/Display/Source/ListView.swift index e23d5b6a4b..6b93d5a465 100644 --- a/submodules/Display/Source/ListView.swift +++ b/submodules/Display/Source/ListView.swift @@ -4296,6 +4296,16 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture } } } + + public func enumerateItemNodes(_ f: (ASDisplayNode) -> Bool) { + for itemNode in self.itemNodes { + if itemNode.index != nil { + if !f(itemNode) { + break + } + } + } + } public func forEachVisibleItemNode(_ f: (ASDisplayNode) -> Void) { for itemNode in self.itemNodes { diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 24c5f553d0..b3a80f847d 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -4963,12 +4963,22 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G self.chatDisplayNode.historyNode.contentPositionChanged = { [weak self] offset in guard let strongSelf = self else { return } + + var minOffsetForNavigation: CGFloat = 40.0 + strongSelf.chatDisplayNode.historyNode.enumerateItemNodes { itemNode in + if let itemNode = itemNode as? ChatMessageBubbleItemNode { + if itemNode.item?.content.firstMessage.adAttribute != nil { + minOffsetForNavigation += itemNode.bounds.height + } + } + return false + } let offsetAlpha: CGFloat let plainInputSeparatorAlpha: CGFloat switch offset { case let .known(offset): - if offset < 40.0 { + if offset < minOffsetForNavigation { offsetAlpha = 0.0 } else { offsetAlpha = 1.0 diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index 3b3d34b0d0..a55af7ee11 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -1972,6 +1972,9 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewItemNode if dateHeaderAtBottom { layoutInsets.top += layoutConstants.timestampHeaderHeight } + if isAd { + layoutInsets.top += 4.0 + } let layout = ListViewItemNodeLayout(contentSize: layoutSize, insets: layoutInsets)