fix(macos): round chat window chrome
This commit is contained in:
@@ -10,8 +10,9 @@ private let webChatSwiftLogger = Logger(subsystem: "com.steipete.clawdis", categ
|
|||||||
|
|
||||||
private enum WebChatSwiftUILayout {
|
private enum WebChatSwiftUILayout {
|
||||||
static let windowSize = NSSize(width: 1120, height: 840)
|
static let windowSize = NSSize(width: 1120, height: 840)
|
||||||
static let panelSize = NSSize(width: 560, height: 720)
|
static let panelSize = NSSize(width: 480, height: 640)
|
||||||
static let windowMinSize = NSSize(width: 960, height: 720)
|
static let windowMinSize = NSSize(width: 960, height: 720)
|
||||||
|
static let windowInset: CGFloat = 6
|
||||||
static let anchorPadding: CGFloat = 8
|
static let anchorPadding: CGFloat = 8
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,26 +314,44 @@ final class WebChatSwiftUIWindowController {
|
|||||||
effectView.material = .sidebar
|
effectView.material = .sidebar
|
||||||
effectView.blendingMode = .behindWindow
|
effectView.blendingMode = .behindWindow
|
||||||
effectView.state = .active
|
effectView.state = .active
|
||||||
effectView.translatesAutoresizingMaskIntoConstraints = true
|
|
||||||
effectView.autoresizingMask = [.width, .height]
|
|
||||||
effectView.wantsLayer = true
|
effectView.wantsLayer = true
|
||||||
effectView.layer?.cornerCurve = .continuous
|
effectView.layer?.cornerCurve = .continuous
|
||||||
let cornerRadius: CGFloat = switch presentation {
|
let cornerRadius: CGFloat = switch presentation {
|
||||||
case .panel:
|
case .panel:
|
||||||
16
|
16
|
||||||
case .window:
|
case .window:
|
||||||
12
|
14
|
||||||
}
|
}
|
||||||
effectView.layer?.cornerRadius = cornerRadius
|
effectView.layer?.cornerRadius = cornerRadius
|
||||||
effectView.layer?.masksToBounds = true
|
effectView.layer?.masksToBounds = true
|
||||||
|
|
||||||
|
let rootView: NSView
|
||||||
|
if case .window = presentation {
|
||||||
|
let container = NSView()
|
||||||
|
container.wantsLayer = true
|
||||||
|
container.layer?.backgroundColor = NSColor.clear.cgColor
|
||||||
|
effectView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
container.addSubview(effectView)
|
||||||
|
NSLayoutConstraint.activate([
|
||||||
|
effectView.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: WebChatSwiftUILayout.windowInset),
|
||||||
|
effectView.trailingAnchor.constraint(equalTo: container.trailingAnchor, constant: -WebChatSwiftUILayout.windowInset),
|
||||||
|
effectView.topAnchor.constraint(equalTo: container.topAnchor, constant: WebChatSwiftUILayout.windowInset),
|
||||||
|
effectView.bottomAnchor.constraint(equalTo: container.bottomAnchor, constant: -WebChatSwiftUILayout.windowInset),
|
||||||
|
])
|
||||||
|
rootView = container
|
||||||
|
} else {
|
||||||
|
effectView.translatesAutoresizingMaskIntoConstraints = true
|
||||||
|
effectView.autoresizingMask = [.width, .height]
|
||||||
|
rootView = effectView
|
||||||
|
}
|
||||||
|
|
||||||
hosting.view.translatesAutoresizingMaskIntoConstraints = false
|
hosting.view.translatesAutoresizingMaskIntoConstraints = false
|
||||||
hosting.view.wantsLayer = true
|
hosting.view.wantsLayer = true
|
||||||
hosting.view.layer?.backgroundColor = NSColor.clear.cgColor
|
hosting.view.layer?.backgroundColor = NSColor.clear.cgColor
|
||||||
|
|
||||||
controller.addChild(hosting)
|
controller.addChild(hosting)
|
||||||
effectView.addSubview(hosting.view)
|
effectView.addSubview(hosting.view)
|
||||||
controller.view = effectView
|
controller.view = rootView
|
||||||
|
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
hosting.view.leadingAnchor.constraint(equalTo: effectView.leadingAnchor),
|
hosting.view.leadingAnchor.constraint(equalTo: effectView.leadingAnchor),
|
||||||
|
|||||||
Reference in New Issue
Block a user