aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Shared/HotlinePanel.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Shared/HotlinePanel.swift')
-rw-r--r--Hotline/Shared/HotlinePanel.swift39
1 files changed, 22 insertions, 17 deletions
diff --git a/Hotline/Shared/HotlinePanel.swift b/Hotline/Shared/HotlinePanel.swift
index 191e89a..6376a07 100644
--- a/Hotline/Shared/HotlinePanel.swift
+++ b/Hotline/Shared/HotlinePanel.swift
@@ -1,63 +1,68 @@
import Cocoa
import SwiftUI
-fileprivate let HOTLINE_PANEL_SIZE: CGSize = CGSizeMake(468, 114 - 10)
+private let HOTLINE_PANEL_SIZE: CGSize = CGSizeMake(468, 114 - 10)
class HotlinePanel: NSPanel {
init(_ view: HotlinePanelView) {
- super.init(contentRect: NSRect(x: 0, y: 0, width: HOTLINE_PANEL_SIZE.width, height: HOTLINE_PANEL_SIZE.height), styleMask: [.nonactivatingPanel, .titled, .closable, .utilityWindow, .fullSizeContentView], backing: .buffered, defer: false)
-
+ super.init(
+ contentRect: NSRect(
+ x: 0, y: 0, width: HOTLINE_PANEL_SIZE.width, height: HOTLINE_PANEL_SIZE.height),
+ styleMask: [.nonactivatingPanel, .titled, .closable, .utilityWindow, .fullSizeContentView],
+ backing: .buffered, defer: false)
+
// Make sure that the panel is in front of almost all other windows
self.isFloatingPanel = false
self.level = .floating
self.hidesOnDeactivate = true
self.animationBehavior = .utilityWindow
-
+
// Allow the panel to appear in a fullscreen space
-// self.collectionBehavior.insert(.fullScreenAuxiliary)
+ // self.collectionBehavior.insert(.fullScreenAuxiliary)
self.collectionBehavior.insert(.canJoinAllSpaces)
self.collectionBehavior.insert(.ignoresCycle)
-
-// self.appearance = NSAppearance(named: .vibrantDark)
+
+ // self.appearance = NSAppearance(named: .vibrantDark)
// Don't delete panel state when it's closed.
self.isReleasedWhenClosed = false
-
+
self.standardWindowButton(.closeButton)?.isHidden = true
self.standardWindowButton(.zoomButton)?.isHidden = true
self.standardWindowButton(.miniaturizeButton)?.isHidden = true
-
+
// Make it transparent, the view inside will have to set the background.
// This is necessary because otherwise, we will have some space for the titlebar on top of the height of the view itself which we don't want.
self.isOpaque = false
self.backgroundColor = .clear
-
+
// Since we don't show a statusbar, this allows us to drag the window by its background instead of the titlebar.
self.isMovableByWindowBackground = true
self.titlebarAppearsTransparent = true
-
+
let hostingView = NSHostingView(rootView: view.edgesIgnoringSafeArea(.top))
hostingView.sizingOptions = [.preferredContentSize]
- let visualEffectView = NSVisualEffectView(frame: NSRect(x: 0, y: 0, width: HOTLINE_PANEL_SIZE.width, height: HOTLINE_PANEL_SIZE.height))
+ let visualEffectView = NSVisualEffectView(
+ frame: NSRect(x: 0, y: 0, width: HOTLINE_PANEL_SIZE.width, height: HOTLINE_PANEL_SIZE.height))
visualEffectView.material = .sidebar
visualEffectView.blendingMode = .behindWindow
visualEffectView.state = NSVisualEffectView.State.active
visualEffectView.autoresizingMask = [.width, .height]
visualEffectView.autoresizesSubviews = true
visualEffectView.addSubview(hostingView)
-
+
self.contentView = visualEffectView
-
+
hostingView.frame = visualEffectView.bounds
-
+
self.cascadeTopLeft(from: NSMakePoint(16, 16))
}
-
+
override var canBecomeKey: Bool {
return false
}
-
+
override var canBecomeMain: Bool {
return false
}