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 {