mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various Fixes
This commit is contained in:
parent
7f0501d2cb
commit
c73cf2386d
@ -328,6 +328,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||||||
private var reorderInProgress: Bool = false
|
private var reorderInProgress: Bool = false
|
||||||
private var reorderingItemsCompleted: (() -> Void)?
|
private var reorderingItemsCompleted: (() -> Void)?
|
||||||
private var reorderScrollStartTimestamp: Double?
|
private var reorderScrollStartTimestamp: Double?
|
||||||
|
private var reorderScrollUpdateTimestamp: Double?
|
||||||
private var reorderLastTimestamp: Double?
|
private var reorderLastTimestamp: Double?
|
||||||
public var reorderedItemHasShadow = true
|
public var reorderedItemHasShadow = true
|
||||||
|
|
||||||
@ -570,7 +571,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||||||
for i in 0 ..< self.itemNodes.count {
|
for i in 0 ..< self.itemNodes.count {
|
||||||
if let itemNodeIndex = self.itemNodes[i].index, itemNodeIndex != reorderItemIndex {
|
if let itemNodeIndex = self.itemNodes[i].index, itemNodeIndex != reorderItemIndex {
|
||||||
let itemFrame = self.itemNodes[i].apparentContentFrame
|
let itemFrame = self.itemNodes[i].apparentContentFrame
|
||||||
// let itemOffset = itemFrame.midY
|
|
||||||
let offsetToMin = itemFrame.minY - verticalOffset
|
let offsetToMin = itemFrame.minY - verticalOffset
|
||||||
let offsetToMax = itemFrame.maxY - verticalOffset
|
let offsetToMax = itemFrame.maxY - verticalOffset
|
||||||
let deltaOffset: CGFloat
|
let deltaOffset: CGFloat
|
||||||
@ -579,7 +580,6 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||||||
} else {
|
} else {
|
||||||
deltaOffset = offsetToMin
|
deltaOffset = offsetToMin
|
||||||
}
|
}
|
||||||
// let deltaOffset = min(itemFrame.minY - verticalOffset, itemFrame.maxY - verticalOffset)
|
|
||||||
if let (_, closestOffset) = closestIndex {
|
if let (_, closestOffset) = closestIndex {
|
||||||
if abs(deltaOffset) < abs(closestOffset) {
|
if abs(deltaOffset) < abs(closestOffset) {
|
||||||
closestIndex = (itemNodeIndex, deltaOffset)
|
closestIndex = (itemNodeIndex, deltaOffset)
|
||||||
@ -590,7 +590,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let (closestIndexValue, offset) = closestIndex {
|
if let (closestIndexValue, offset) = closestIndex {
|
||||||
//print("closest \(closestIndexValue) offset \(offset)")
|
// print("closest \(closestIndexValue) offset \(offset)")
|
||||||
var toIndex: Int
|
var toIndex: Int
|
||||||
if offset > 0 {
|
if offset > 0 {
|
||||||
toIndex = closestIndexValue
|
toIndex = closestIndexValue
|
||||||
@ -604,7 +604,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if toIndex != reorderItemNode.index {
|
if toIndex != reorderItemNode.index {
|
||||||
if let reorderLastTimestamp = self.reorderLastTimestamp, timestamp < reorderLastTimestamp + 0.3 {
|
if let reorderLastTimestamp = self.reorderLastTimestamp, timestamp < reorderLastTimestamp + 0.2 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if reorderNode.currentState?.0 != reorderItemIndex || reorderNode.currentState?.1 != toIndex {
|
if reorderNode.currentState?.0 != reorderItemIndex || reorderNode.currentState?.1 != toIndex {
|
||||||
@ -4101,7 +4101,13 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||||||
self.enqueueUpdateVisibleItems(synchronous: false)
|
self.enqueueUpdateVisibleItems(synchronous: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
self.checkItemReordering()
|
if scrollingForReorder {
|
||||||
|
if let reorderScrollUpdateTimestamp = self.reorderScrollUpdateTimestamp, timestamp < reorderScrollUpdateTimestamp + 0.05 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
self.reorderScrollUpdateTimestamp = timestamp
|
||||||
|
self.checkItemReordering(force: true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
|
@ -47,7 +47,7 @@ public final class ListViewReorderingGestureRecognizer: UIGestureRecognizer {
|
|||||||
|
|
||||||
private func startLongPressTimer() {
|
private func startLongPressTimer() {
|
||||||
self.longPressTimer?.invalidate()
|
self.longPressTimer?.invalidate()
|
||||||
let longPressTimer = SwiftSignalKit.Timer(timeout: 0.8, repeat: false, completion: { [weak self] in
|
let longPressTimer = SwiftSignalKit.Timer(timeout: 0.6, repeat: false, completion: { [weak self] in
|
||||||
self?.longPressTimerFired()
|
self?.longPressTimerFired()
|
||||||
}, queue: Queue.mainQueue())
|
}, queue: Queue.mainQueue())
|
||||||
self.longPressTimer = longPressTimer
|
self.longPressTimer = longPressTimer
|
||||||
|
@ -622,7 +622,7 @@ final class ChatMediaInputNode: ChatInputNode {
|
|||||||
return .single(false)
|
return .single(false)
|
||||||
}
|
}
|
||||||
self?.lastReorderItemIndex = toIndex
|
self?.lastReorderItemIndex = toIndex
|
||||||
|
|
||||||
let fromEntry = entries[fromIndex]
|
let fromEntry = entries[fromIndex]
|
||||||
guard case let .stickerPack(_, fromPackInfo, _, _, _) = fromEntry else {
|
guard case let .stickerPack(_, fromPackInfo, _, _, _) = fromEntry else {
|
||||||
return .single(false)
|
return .single(false)
|
||||||
@ -744,7 +744,7 @@ final class ChatMediaInputNode: ChatInputNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self?.startCollapseTimer(timeout: 1.0)
|
self?.startCollapseTimer(timeout: 2.0)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1275,7 +1275,7 @@ final class ChatMediaInputNode: ChatInputNode {
|
|||||||
strongSelf.panelFocusScrollToIndex = nil
|
strongSelf.panelFocusScrollToIndex = nil
|
||||||
strongSelf.panelFocusInitialPosition = nil
|
strongSelf.panelFocusInitialPosition = nil
|
||||||
}
|
}
|
||||||
strongSelf.startCollapseTimer(timeout: decelerated ? 0.5 : 2.0)
|
strongSelf.startCollapseTimer(timeout: decelerated ? 0.5 : 2.5)
|
||||||
|
|
||||||
strongSelf.scrollingStickerPacksListPromise.set(false)
|
strongSelf.scrollingStickerPacksListPromise.set(false)
|
||||||
}
|
}
|
||||||
@ -1315,7 +1315,7 @@ final class ChatMediaInputNode: ChatInputNode {
|
|||||||
strongSelf.panelFocusScrollToIndex = nil
|
strongSelf.panelFocusScrollToIndex = nil
|
||||||
strongSelf.panelFocusInitialPosition = nil
|
strongSelf.panelFocusInitialPosition = nil
|
||||||
}
|
}
|
||||||
strongSelf.startCollapseTimer(timeout: decelerated ? 0.5 : 2.0)
|
strongSelf.startCollapseTimer(timeout: decelerated ? 0.5 : 2.5)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user