|
@@ -57,7 +57,7 @@ final class DesktopWidgetWindowManager {
|
|
|
|
|
|
|
|
private func makePanel(for instance: WidgetInstance, app: LauncherApp, variant: WidgetVariant) -> NSPanel {
|
|
private func makePanel(for instance: WidgetInstance, app: LauncherApp, variant: WidgetVariant) -> NSPanel {
|
|
|
let size = panelSize(for: variant.size)
|
|
let size = panelSize(for: variant.size)
|
|
|
- let panel = NSPanel(
|
|
|
|
|
|
|
+ let panel = DesktopWidgetPanel(
|
|
|
contentRect: NSRect(x: 0, y: 0, width: size.width, height: size.height),
|
|
contentRect: NSRect(x: 0, y: 0, width: size.width, height: size.height),
|
|
|
styleMask: [.nonactivatingPanel, .borderless],
|
|
styleMask: [.nonactivatingPanel, .borderless],
|
|
|
backing: .buffered,
|
|
backing: .buffered,
|
|
@@ -66,16 +66,19 @@ final class DesktopWidgetWindowManager {
|
|
|
|
|
|
|
|
panel.isReleasedWhenClosed = false
|
|
panel.isReleasedWhenClosed = false
|
|
|
panel.isFloatingPanel = false
|
|
panel.isFloatingPanel = false
|
|
|
- panel.becomesKeyOnlyIfNeeded = true
|
|
|
|
|
|
|
+ panel.becomesKeyOnlyIfNeeded = false
|
|
|
panel.isMovable = true
|
|
panel.isMovable = true
|
|
|
- panel.level = .normal
|
|
|
|
|
|
|
+ panel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.desktopIconWindow)))
|
|
|
panel.hasShadow = true
|
|
panel.hasShadow = true
|
|
|
panel.isOpaque = false
|
|
panel.isOpaque = false
|
|
|
panel.backgroundColor = .clear
|
|
panel.backgroundColor = .clear
|
|
|
panel.isMovableByWindowBackground = true
|
|
panel.isMovableByWindowBackground = true
|
|
|
panel.hidesOnDeactivate = false
|
|
panel.hidesOnDeactivate = false
|
|
|
|
|
+ panel.ignoresMouseEvents = false
|
|
|
panel.collectionBehavior = [
|
|
panel.collectionBehavior = [
|
|
|
.canJoinAllSpaces,
|
|
.canJoinAllSpaces,
|
|
|
|
|
+ .stationary,
|
|
|
|
|
+ .ignoresCycle,
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
let root = DesktopWidgetHostView(
|
|
let root = DesktopWidgetHostView(
|
|
@@ -196,6 +199,11 @@ final class DesktopWidgetWindowManager {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+private final class DesktopWidgetPanel: NSPanel {
|
|
|
|
|
+ override var canBecomeKey: Bool { false }
|
|
|
|
|
+ override var canBecomeMain: Bool { false }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
private struct DesktopWidgetHostView: View {
|
|
private struct DesktopWidgetHostView: View {
|
|
|
let app: LauncherApp
|
|
let app: LauncherApp
|
|
|
let variant: WidgetVariant
|
|
let variant: WidgetVariant
|