mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
- ipad fixes
This commit is contained in:
parent
03718ebeb2
commit
b63cc6797f
5 changed files with 28 additions and 9 deletions
|
|
@ -10,11 +10,18 @@ public final class ContextMenuControllerPresentationArguments {
|
|||
}
|
||||
}
|
||||
|
||||
public final class ContextMenuController: ViewController {
|
||||
public final class ContextMenuController: ViewController, KeyShortcutResponder {
|
||||
private var contextMenuNode: ContextMenuNode {
|
||||
return self.displayNode as! ContextMenuNode
|
||||
}
|
||||
|
||||
public var keyShortcuts: [KeyShortcut] {
|
||||
return [KeyShortcut(input: UIKeyInputEscape, action: { [weak self] in
|
||||
if let strongSelf = self {
|
||||
strongSelf.dismiss()
|
||||
}
|
||||
})]
|
||||
}
|
||||
private let actions: [ContextMenuAction]
|
||||
private let catchTapsOutside: Bool
|
||||
private let hasHapticFeedback: Bool
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ public class KeyShortcutsController: UIResponder {
|
|||
guard let viewController = viewController as? KeyShortcutResponder else {
|
||||
return true
|
||||
}
|
||||
shortcuts.removeAll(where: { viewController.keyShortcuts.contains($0) })
|
||||
shortcuts.append(contentsOf: viewController.keyShortcuts)
|
||||
return true
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1640,7 +1640,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||
|
||||
let beginReplay = { [weak self] in
|
||||
if let strongSelf = self {
|
||||
strongSelf.replayOperations(animated: animated, animateAlpha: options.contains(.AnimateAlpha), animateCrossfade: options.contains(.AnimateCrossfade), animateTopItemVerticalOrigin: options.contains(.AnimateTopItemPosition), operations: updatedOperations, requestItemInsertionAnimationsIndices: options.contains(.RequestItemInsertionAnimations) ? insertedIndexSet : Set(), scrollToItem: scrollToItem, additionalScrollDistance: additionalScrollDistance, updateSizeAndInsets: updateSizeAndInsets, stationaryItemIndex: stationaryItemIndex, updateOpaqueState: updateOpaqueState, completion: {
|
||||
strongSelf.replayOperations(animated: animated, animateAlpha: options.contains(.AnimateAlpha), animateCrossfade: options.contains(.AnimateCrossfade), synchronous: options.contains(.Synchronous), animateTopItemVerticalOrigin: options.contains(.AnimateTopItemPosition), operations: updatedOperations, requestItemInsertionAnimationsIndices: options.contains(.RequestItemInsertionAnimations) ? insertedIndexSet : Set(), scrollToItem: scrollToItem, additionalScrollDistance: additionalScrollDistance, updateSizeAndInsets: updateSizeAndInsets, stationaryItemIndex: stationaryItemIndex, updateOpaqueState: updateOpaqueState, completion: {
|
||||
if options.contains(.PreferSynchronousDrawing) {
|
||||
let startTime = CACurrentMediaTime()
|
||||
self?.recursivelyEnsureDisplaySynchronously(true)
|
||||
|
|
@ -2084,7 +2084,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||
}
|
||||
}
|
||||
|
||||
private func replayOperations(animated: Bool, animateAlpha: Bool, animateCrossfade: Bool, animateTopItemVerticalOrigin: Bool, operations: [ListViewStateOperation], requestItemInsertionAnimationsIndices: Set<Int>, scrollToItem originalScrollToItem: ListViewScrollToItem?, additionalScrollDistance: CGFloat, updateSizeAndInsets: ListViewUpdateSizeAndInsets?, stationaryItemIndex: Int?, updateOpaqueState: Any?, completion: () -> Void) {
|
||||
private func replayOperations(animated: Bool, animateAlpha: Bool, animateCrossfade: Bool, synchronous: Bool, animateTopItemVerticalOrigin: Bool, operations: [ListViewStateOperation], requestItemInsertionAnimationsIndices: Set<Int>, scrollToItem originalScrollToItem: ListViewScrollToItem?, additionalScrollDistance: CGFloat, updateSizeAndInsets: ListViewUpdateSizeAndInsets?, stationaryItemIndex: Int?, updateOpaqueState: Any?, completion: () -> Void) {
|
||||
var scrollToItem: ListViewScrollToItem?
|
||||
var isExperimentalSnapToScrollToItem = false
|
||||
if let originalScrollToItem = originalScrollToItem {
|
||||
|
|
@ -2626,7 +2626,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||
accessoryNodesTransition = .animated(duration: 0.3, curve: .easeInOut)
|
||||
}
|
||||
|
||||
self.updateAccessoryNodes(transition: accessoryNodesTransition, currentTimestamp: timestamp, leftInset: listInsets.left, rightInset: listInsets.right)
|
||||
self.updateAccessoryNodes(transition: accessoryNodesTransition, synchronous: synchronous, currentTimestamp: timestamp, leftInset: listInsets.left, rightInset: listInsets.right)
|
||||
|
||||
if let highlightedItemNode = highlightedItemNode {
|
||||
if highlightedItemNode.index != self.highlightedItemIndex {
|
||||
|
|
@ -3070,7 +3070,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||
}
|
||||
}
|
||||
|
||||
private func updateAccessoryNodes(transition: ContainedViewLayoutTransition, currentTimestamp: Double, leftInset: CGFloat, rightInset: CGFloat) {
|
||||
private func updateAccessoryNodes(transition: ContainedViewLayoutTransition, synchronous: Bool, currentTimestamp: Double, leftInset: CGFloat, rightInset: CGFloat) {
|
||||
var totalVisibleHeight: CGFloat = 0.0
|
||||
var index = -1
|
||||
let count = self.itemNodes.count
|
||||
|
|
@ -3132,7 +3132,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||
}
|
||||
|
||||
if !didStealAccessoryNode {
|
||||
let accessoryNode = accessoryItem.node()
|
||||
let accessoryNode = accessoryItem.node(synchronous: synchronous)
|
||||
itemNode.addSubnode(accessoryNode)
|
||||
itemNode.setAccessoryItemNode(accessoryNode, leftInset: leftInset, rightInset: rightInset)
|
||||
}
|
||||
|
|
@ -3190,7 +3190,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||
}
|
||||
|
||||
if !didStealHeaderAccessoryNode {
|
||||
let headerAccessoryNode = headerAccessoryItem.node()
|
||||
let headerAccessoryNode = headerAccessoryItem.node(synchronous: synchronous)
|
||||
itemNode.addSubnode(headerAccessoryNode)
|
||||
itemNode.headerAccessoryItemNode = headerAccessoryNode
|
||||
}
|
||||
|
|
@ -3357,7 +3357,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
|
|||
var updatedOperations = operations
|
||||
updatedState.removeInvisibleNodes(&updatedOperations)
|
||||
self.dispatchOnVSync {
|
||||
self.replayOperations(animated: false, animateAlpha: false, animateCrossfade: false, animateTopItemVerticalOrigin: false, operations: updatedOperations, requestItemInsertionAnimationsIndices: Set(), scrollToItem: nil, additionalScrollDistance: 0.0, updateSizeAndInsets: nil, stationaryItemIndex: nil, updateOpaqueState: nil, completion: completion)
|
||||
self.replayOperations(animated: false, animateAlpha: false, animateCrossfade: false, synchronous: false, animateTopItemVerticalOrigin: false, operations: updatedOperations, requestItemInsertionAnimationsIndices: Set(), scrollToItem: nil, additionalScrollDistance: 0.0, updateSizeAndInsets: nil, stationaryItemIndex: nil, updateOpaqueState: nil, completion: completion)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,5 +2,5 @@ import Foundation
|
|||
|
||||
public protocol ListViewAccessoryItem {
|
||||
func isEqualToItem(_ other: ListViewAccessoryItem) -> Bool
|
||||
func node() -> ListViewAccessoryItemNode
|
||||
func node(synchronous: Bool) -> ListViewAccessoryItemNode
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1123,6 +1123,17 @@ open class NavigationBar: ASDisplayNode {
|
|||
}
|
||||
}
|
||||
|
||||
public func executeBack() -> Bool {
|
||||
if self.backButtonNode.isInHierarchy {
|
||||
self.backButtonNode.pressed(0)
|
||||
} else if self.leftButtonNode.isInHierarchy {
|
||||
self.leftButtonNode.pressed(0)
|
||||
} else {
|
||||
self.backButtonNode.pressed(0)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
public func setHidden(_ hidden: Bool, animated: Bool) {
|
||||
if let contentNode = self.contentNode, case .replacement = contentNode.mode {
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue