diff --git a/submodules/AsyncDisplayKit/Source/ASDisplayNode.mm b/submodules/AsyncDisplayKit/Source/ASDisplayNode.mm index ee57c04c8e..c0b639df84 100644 --- a/submodules/AsyncDisplayKit/Source/ASDisplayNode.mm +++ b/submodules/AsyncDisplayKit/Source/ASDisplayNode.mm @@ -2998,7 +2998,7 @@ ASDISPLAYNODE_INLINE BOOL subtreeIsRasterized(ASDisplayNode *node) { if ([self _implementsDisplay]) { if (nowDisplay) { [ASDisplayNode scheduleNodeForRecursiveDisplay:self]; - } else { + } else if (!self.disableClearContentsOnHide) { [[self asyncLayer] cancelAsyncDisplay]; //schedule clear contents on next runloop dispatch_async(dispatch_get_main_queue(), ^{ diff --git a/submodules/AsyncDisplayKit/Source/PublicHeaders/AsyncDisplayKit/ASDisplayNode.h b/submodules/AsyncDisplayKit/Source/PublicHeaders/AsyncDisplayKit/ASDisplayNode.h index 5b97e3fd83..f74e585372 100644 --- a/submodules/AsyncDisplayKit/Source/PublicHeaders/AsyncDisplayKit/ASDisplayNode.h +++ b/submodules/AsyncDisplayKit/Source/PublicHeaders/AsyncDisplayKit/ASDisplayNode.h @@ -567,6 +567,8 @@ AS_EXTERN NSInteger const ASDefaultDrawingPriority; */ @property BOOL automaticallyRelayoutOnLayoutMarginsChanges; +@property (nonatomic) bool disableClearContentsOnHide; + @end /** diff --git a/submodules/AvatarNode/Sources/AvatarNode.swift b/submodules/AvatarNode/Sources/AvatarNode.swift index 2789634af2..03ecb81b85 100644 --- a/submodules/AvatarNode/Sources/AvatarNode.swift +++ b/submodules/AvatarNode/Sources/AvatarNode.swift @@ -296,6 +296,7 @@ public final class AvatarNode: ASDisplayNode { self.isOpaque = false self.displaysAsynchronously = true + self.disableClearContentsOnHide = true self.imageNode.isLayerBacked = true self.addSubnode(self.imageNode) diff --git a/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenMemberItem.swift b/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenMemberItem.swift index c59d8cb50f..414ea0ddf7 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenMemberItem.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenMemberItem.swift @@ -275,6 +275,9 @@ private final class PeerInfoScreenMemberItemNode: PeerInfoScreenItemNode { } else if item.context.account.peerId == item.member.id { highlight = false } + if let point, let itemNode = self.itemNode, let value = itemNode.view.hitTest(self.view.convert(point, to: itemNode.view), with: nil), value is UIControl { + highlight = false + } if highlight { self.selectionNode.updateIsHighlighted(true) } else {