Skip to content

Commit a686639

Browse files
committed
Update package
1 parent 275be4f commit a686639

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

Sources/SwiftUIX/Intermodular/Helpers/AppKit or UIKit/AppKitOrUIKitResponder++.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ extension AppKitOrUIKitResponder {
3030
_SwiftUIX_nearestResponder(where: { $0.isFirstResponder })
3131
}
3232

33+
public var _SwiftUIX_nearestWindow: AppKitOrUIKitWindow? {
34+
if let controller = self as? UIViewController {
35+
return controller.view._SwiftUIX_nearestWindow
36+
} else if let view = self as? UIView {
37+
return view.window ?? view.superview?._SwiftUIX_nearestWindow
38+
} else {
39+
assertionFailure()
40+
41+
return nil
42+
}
43+
}
44+
3345
public func _SwiftUIX_nearestResponder(
3446
where predicate: (AppKitOrUIKitResponder) throws -> Bool
3547
) rethrows -> AppKitOrUIKitResponder? {
@@ -81,9 +93,9 @@ extension AppKitOrUIKitResponder {
8193

8294
public var _SwiftUIX_nearestWindow: AppKitOrUIKitWindow? {
8395
if let controller = self as? NSViewController {
84-
return controller.view.window
96+
return controller.view._SwiftUIX_nearestWindow
8597
} else if let view = self as? NSView {
86-
return view.window ?? view.superview?.window
98+
return view.window ?? view.superview?._SwiftUIX_nearestWindow
8799
} else {
88100
assertionFailure()
89101

Sources/SwiftUIX/Intermodular/Helpers/Quartz/_QuickLookPreviewPanelPresenter.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ private struct _QuickLookPreviewPanelPresenter: NSViewRepresentable {
3737
context.coordinator.isPresented = isPresented
3838

3939
if isPresented.wrappedValue {
40-
context.coordinator.show()
40+
if !context.coordinator.isPanelVisible {
41+
context.coordinator.show()
42+
}
4143
} else {
4244
context.coordinator.hide()
4345
}
@@ -103,6 +105,10 @@ extension _QuickLookPreviewPanelPresenter {
103105
fileprivate var previewPanel: QLPreviewPanel?
104106
fileprivate var previewItems: [QLPreviewItem]?
105107

108+
fileprivate var isPanelVisible: Bool {
109+
QLPreviewPanel.sharedPreviewPanelExists() && previewPanel?.isVisible == true
110+
}
111+
106112
fileprivate init(isPresented: Binding<Bool>) {
107113
self.isPresented = isPresented
108114

@@ -117,7 +123,11 @@ extension _QuickLookPreviewPanelPresenter {
117123
}
118124

119125
fileprivate func show() {
120-
let panel = self.setupPreviewPanel()
126+
let panel = self.setupPreviewPanelIfNecessary()
127+
128+
guard !isPanelVisible else {
129+
return
130+
}
121131

122132
panel.makeKeyAndOrderFront(nil)
123133
}
@@ -127,7 +137,7 @@ extension _QuickLookPreviewPanelPresenter {
127137
}
128138

129139
@discardableResult
130-
private func setupPreviewPanel() -> QLPreviewPanel {
140+
private func setupPreviewPanelIfNecessary() -> QLPreviewPanel {
131141
if let previewPanel {
132142
return previewPanel
133143
}

0 commit comments

Comments
 (0)