diff --git a/Display.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist b/Display.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist index 250c9b5f47..f568be7cc9 100644 --- a/Display.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Display.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Display.xcscheme orderHint - 7 + 5 DisplayMac.xcscheme @@ -17,7 +17,7 @@ DisplayTests.xcscheme orderHint - 9 + 7 SuppressBuildableAutocreation diff --git a/Display/ContextMenuContainerNode.swift b/Display/ContextMenuContainerNode.swift index 74d7b9e28f..39abfa5ee3 100644 --- a/Display/ContextMenuContainerNode.swift +++ b/Display/ContextMenuContainerNode.swift @@ -62,7 +62,7 @@ final class ContextMenuContainerNode: ASDisplayNode { let arrowOnBottom = maskParams.arrowOnBottom path.move(to: CGPoint(x: 0.0, y: verticalInset + cornerRadius)) - path.addArc(withCenter: CGPoint(x: cornerRadius, y: verticalInset + cornerRadius), radius: cornerRadius, startAngle: CGFloat(M_PI), endAngle: CGFloat(3 * M_PI / 2), clockwise: true) + path.addArc(withCenter: CGPoint(x: cornerRadius, y: verticalInset + cornerRadius), radius: cornerRadius, startAngle: CGFloat.pi, endAngle: CGFloat(3 * M_PI / 2), clockwise: true) if !arrowOnBottom { path.addLine(to: CGPoint(x: arrowPosition - arrowWidth / 2.0, y: verticalInset)) path.addLine(to: CGPoint(x: arrowPosition, y: 0.0)) diff --git a/Display/ImmediateTextNode.swift b/Display/ImmediateTextNode.swift index 796cf76dd0..c25c5b63fc 100644 --- a/Display/ImmediateTextNode.swift +++ b/Display/ImmediateTextNode.swift @@ -1,6 +1,6 @@ import Foundation -public final class ImmediateTextNode: TextNode { +public class ImmediateTextNode: TextNode { public var attributedText: NSAttributedString? public var textAlignment: NSTextAlignment = .natural public var maximumNumberOfLines: Int = 1 diff --git a/Display/PeekControllerGestureRecognizer.swift b/Display/PeekControllerGestureRecognizer.swift index 307d1310f1..25ae8c9ffd 100644 --- a/Display/PeekControllerGestureRecognizer.swift +++ b/Display/PeekControllerGestureRecognizer.swift @@ -164,7 +164,7 @@ public final class PeekControllerGestureRecognizer: UIPanGestureRecognizer { override public func touchesEnded(_ touches: Set, with event: UIEvent) { super.touchesEnded(touches, with: event) - if self.activateBySingleTap, candidateContent != nil { + if self.activateBySingleTap, self.candidateContent != nil, self.presentedController == nil { self.longTapTimerFired() self.pressTimerFired() } else { diff --git a/Display/PeekControllerNode.swift b/Display/PeekControllerNode.swift index 9b16ce4cf9..2c4f54ff58 100644 --- a/Display/PeekControllerNode.swift +++ b/Display/PeekControllerNode.swift @@ -118,9 +118,9 @@ final class PeekControllerNode: ViewControllerTracingNode { var containerFrame: CGRect switch self.content.presentation() { case .contained: - containerFrame = CGRect(origin: CGPoint(x: floor((layout.size.width - contentSize.width) / 2.0), y: self.containerOffset + floor((layout.size.height - contentSize.height) / 2.0)), size: contentSize) + containerFrame = CGRect(origin: CGPoint(x: floor((layout.size.width - contentSize.width) / 2.0), y: floor((layout.size.height - contentSize.height) / 2.0)), size: contentSize) case .freeform: - containerFrame = CGRect(origin: CGPoint(x: floor((layout.size.width - contentSize.width) / 2.0), y: self.containerOffset + floor((layout.size.height - contentSize.height) / 4.0)), size: contentSize) + containerFrame = CGRect(origin: CGPoint(x: floor((layout.size.width - contentSize.width) / 2.0), y: floor((layout.size.height - contentSize.height) / 4.0)), size: contentSize) } if let menuNode = self.menuNode { @@ -131,17 +131,23 @@ final class PeekControllerNode: ViewControllerTracingNode { if self.displayingMenu { let upperBound = layout.size.height - layoutInsets.bottom - menuHeight - 14.0 * 2.0 - containerFrame.height if containerFrame.origin.y > upperBound { - var offset = upperBound - containerFrame.origin.y - let delta = abs(offset) - let factor: CGFloat = 60.0 - offset = (-((1.0 - (1.0 / (((delta) * 0.55 / (factor)) + 1.0))) * factor)) * (offset < 0.0 ? 1.0 : -1.0) - containerFrame.origin.y = upperBound - offset + containerFrame.origin.y = upperBound } transition.updateAlpha(layer: self.blurView.layer, alpha: 1.0) } } + if self.displayingMenu { + var offset = self.containerOffset + let delta = abs(offset) + let factor: CGFloat = 60.0 + offset = (-((1.0 - (1.0 / (((delta) * 0.55 / (factor)) + 1.0))) * factor)) * (offset < 0.0 ? 1.0 : -1.0) + containerFrame = containerFrame.offsetBy(dx: 0.0, dy: offset) + } else { + containerFrame = containerFrame.offsetBy(dx: 0.0, dy: self.containerOffset) + } + transition.updateFrame(node: self.containerNode, frame: containerFrame) if let menuNode = self.menuNode, let menuSize = menuSize {