|
@@ -16,6 +16,8 @@ enum PhotoPreviewService {
|
|
|
final class PhotoPreviewOverlayView: NSView, AppearanceRefreshable {
|
|
final class PhotoPreviewOverlayView: NSView, AppearanceRefreshable {
|
|
|
var onDismiss: (() -> Void)?
|
|
var onDismiss: (() -> Void)?
|
|
|
|
|
|
|
|
|
|
+ override var mouseDownCanMoveWindow: Bool { false }
|
|
|
|
|
+
|
|
|
private let urls: [URL]
|
|
private let urls: [URL]
|
|
|
private var currentIndex = 0
|
|
private var currentIndex = 0
|
|
|
private var securityAccess: [URL: Bool] = [:]
|
|
private var securityAccess: [URL: Bool] = [:]
|
|
@@ -114,21 +116,26 @@ final class PhotoPreviewOverlayView: NSView, AppearanceRefreshable {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func present(in parent: NSView) {
|
|
func present(in parent: NSView) {
|
|
|
- guard superview == nil else { return }
|
|
|
|
|
- parent.addSubview(self)
|
|
|
|
|
- NSLayoutConstraint.activate([
|
|
|
|
|
- leadingAnchor.constraint(equalTo: parent.leadingAnchor),
|
|
|
|
|
- trailingAnchor.constraint(equalTo: parent.trailingAnchor),
|
|
|
|
|
- topAnchor.constraint(equalTo: parent.topAnchor),
|
|
|
|
|
- bottomAnchor.constraint(equalTo: parent.bottomAnchor),
|
|
|
|
|
- ])
|
|
|
|
|
- alphaValue = 0
|
|
|
|
|
- NSAnimationContext.runAnimationGroup { context in
|
|
|
|
|
- context.duration = 0.2
|
|
|
|
|
- animator().alphaValue = 1
|
|
|
|
|
|
|
+ if superview == nil {
|
|
|
|
|
+ parent.addSubview(self)
|
|
|
|
|
+ NSLayoutConstraint.activate([
|
|
|
|
|
+ leadingAnchor.constraint(equalTo: parent.leadingAnchor),
|
|
|
|
|
+ trailingAnchor.constraint(equalTo: parent.trailingAnchor),
|
|
|
|
|
+ topAnchor.constraint(equalTo: parent.topAnchor),
|
|
|
|
|
+ bottomAnchor.constraint(equalTo: parent.bottomAnchor),
|
|
|
|
|
+ ])
|
|
|
|
|
+ alphaValue = 1
|
|
|
|
|
+ } else {
|
|
|
|
|
+ parent.addSubview(self, positioned: .above, relativeTo: nil)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ override func hitTest(_ point: NSPoint) -> NSView? {
|
|
|
|
|
+ let hit = super.hitTest(point)
|
|
|
|
|
+ if hit != nil { return hit }
|
|
|
|
|
+ return bounds.contains(point) ? self : nil
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
func dismiss(animated: Bool = true) {
|
|
func dismiss(animated: Bool = true) {
|
|
|
stopSecurityAccess()
|
|
stopSecurityAccess()
|
|
|
let remove = { [weak self] in
|
|
let remove = { [weak self] in
|