Input node improvements

This commit is contained in:
Ali
2022-06-28 22:54:05 +02:00
parent 575605f4d0
commit 131be5aaab
51 changed files with 2586 additions and 1363 deletions

View File

@@ -60,7 +60,7 @@ public final class PeekController: ViewController, ContextControllerProtocol {
private let presentationData: PresentationData
private let content: PeekControllerContent
var sourceNode: () -> ASDisplayNode?
var sourceView: () -> (UIView, CGRect)?
public var visibilityUpdated: ((Bool) -> Void)?
@@ -68,10 +68,10 @@ public final class PeekController: ViewController, ContextControllerProtocol {
private var animatedIn = false
public init(presentationData: PresentationData, content: PeekControllerContent, sourceNode: @escaping () -> ASDisplayNode?) {
public init(presentationData: PresentationData, content: PeekControllerContent, sourceView: @escaping () -> (UIView, CGRect)?) {
self.presentationData = presentationData
self.content = content
self.sourceNode = sourceNode
self.sourceView = sourceView
super.init(navigationBarPresentationData: nil)
@@ -90,8 +90,8 @@ public final class PeekController: ViewController, ContextControllerProtocol {
}
private func getSourceRect() -> CGRect {
if let sourceNode = self.sourceNode() {
return sourceNode.view.convert(sourceNode.bounds, to: self.view)
if let (sourceView, sourceRect) = self.sourceView() {
return sourceView.convert(sourceRect, to: self.view)
} else {
let size = self.displayNode.bounds.size
return CGRect(origin: CGPoint(x: floor((size.width - 10.0) / 2.0), y: floor((size.height - 10.0) / 2.0)), size: CGSize(width: 10.0, height: 10.0))