mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
iPad trackpad support improvements
This commit is contained in:
@@ -4623,38 +4623,61 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
||||
}
|
||||
|
||||
override open func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||
let isSecondary: Bool
|
||||
if #available(iOS 13.4, *) {
|
||||
isSecondary = event?.buttonMask == .secondary
|
||||
} else {
|
||||
isSecondary = false
|
||||
}
|
||||
|
||||
if let selectionTouchLocation = self.selectionTouchLocation {
|
||||
let index = self.itemIndexAtPoint(selectionTouchLocation)
|
||||
if index != self.highlightedItemIndex {
|
||||
self.clearHighlightAnimated(false)
|
||||
}
|
||||
|
||||
if let index = index {
|
||||
if self.items[index].selectable {
|
||||
self.highlightedItemIndex = index
|
||||
for itemNode in self.itemNodes {
|
||||
if itemNode.index == index {
|
||||
if itemNode.canBeSelected {
|
||||
if !itemNode.isLayerBacked {
|
||||
self.reorderItemNodeToFront(itemNode)
|
||||
for (_, headerNode) in self.itemHeaderNodes {
|
||||
self.reorderHeaderNodeToFront(headerNode)
|
||||
}
|
||||
}
|
||||
let itemNodeFrame = itemNode.frame
|
||||
itemNode.setHighlighted(true, at: selectionTouchLocation.offsetBy(dx: -itemNodeFrame.minX, dy: -itemNodeFrame.minY), animated: false)
|
||||
} else {
|
||||
self.highlightedItemIndex = nil
|
||||
itemNode.tapped()
|
||||
if isSecondary {
|
||||
if let index = index {
|
||||
if self.items[index].selectable {
|
||||
self.highlightedItemIndex = index
|
||||
for itemNode in self.itemNodes {
|
||||
if itemNode.index == index {
|
||||
itemNode.secondaryAction(at: selectionTouchLocation)
|
||||
self.items[index].performSecondaryAction(listView: self)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if index != self.highlightedItemIndex {
|
||||
self.clearHighlightAnimated(false)
|
||||
}
|
||||
|
||||
if let index = index {
|
||||
if self.items[index].selectable {
|
||||
self.highlightedItemIndex = index
|
||||
for itemNode in self.itemNodes {
|
||||
if itemNode.index == index {
|
||||
if itemNode.canBeSelected {
|
||||
if !itemNode.isLayerBacked {
|
||||
self.reorderItemNodeToFront(itemNode)
|
||||
for (_, headerNode) in self.itemHeaderNodes {
|
||||
self.reorderHeaderNodeToFront(headerNode)
|
||||
}
|
||||
}
|
||||
let itemNodeFrame = itemNode.frame
|
||||
itemNode.setHighlighted(true, at: selectionTouchLocation.offsetBy(dx: -itemNodeFrame.minX, dy: -itemNodeFrame.minY), animated: false)
|
||||
} else {
|
||||
self.highlightedItemIndex = nil
|
||||
itemNode.tapped()
|
||||
}
|
||||
break
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let highlightedItemIndex = self.highlightedItemIndex {
|
||||
|
||||
if !isSecondary, let highlightedItemIndex = self.highlightedItemIndex {
|
||||
for itemNode in self.itemNodes {
|
||||
if itemNode.index == highlightedItemIndex {
|
||||
itemNode.selected()
|
||||
|
||||
Reference in New Issue
Block a user