|
|
@@ -80,7 +80,8 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
|
])
|
|
|
}
|
|
|
|
|
|
- private let contentStack = NSStackView()
|
|
|
+ /// Horizontal row for sidebar + main; plain view + constraints keep both panels top/bottom aligned (stack view height alignment was inconsistent).
|
|
|
+ private let panelsRow = NSView()
|
|
|
private let chromeContainer = NSView()
|
|
|
private let sidebar = NSStackView()
|
|
|
private let mainHost = NSView()
|
|
|
@@ -208,13 +209,7 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
|
wantsLayer = true
|
|
|
layer?.backgroundColor = Theme.pageBackground.cgColor
|
|
|
|
|
|
- contentStack.orientation = .horizontal
|
|
|
- contentStack.spacing = 10
|
|
|
- contentStack.distribution = .fill
|
|
|
- contentStack.translatesAutoresizingMaskIntoConstraints = false
|
|
|
- contentStack.alignment = .height
|
|
|
- // Tighter chrome insets so panels sit closer to the window edges (especially leading / top under the title bar).
|
|
|
- contentStack.edgeInsets = NSEdgeInsets(top: 10, left: 12, bottom: 20, right: 20)
|
|
|
+ panelsRow.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
|
|
chromeContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
|
chromeContainer.wantsLayer = true
|
|
|
@@ -222,7 +217,7 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
|
chromeContainer.layer?.cornerRadius = 18
|
|
|
chromeContainer.layer?.masksToBounds = true
|
|
|
addSubview(chromeContainer)
|
|
|
- chromeContainer.addSubview(contentStack)
|
|
|
+ chromeContainer.addSubview(panelsRow)
|
|
|
|
|
|
sidebar.orientation = .vertical
|
|
|
sidebar.spacing = 10
|
|
|
@@ -331,8 +326,8 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
|
mainOverlay.addArrangedSubview(chatBottomSpacer)
|
|
|
mainOverlay.addArrangedSubview(searchBarShadowHost)
|
|
|
|
|
|
- contentStack.addArrangedSubview(sidebar)
|
|
|
- contentStack.addArrangedSubview(mainHost)
|
|
|
+ panelsRow.addSubview(sidebar)
|
|
|
+ panelsRow.addSubview(mainHost)
|
|
|
|
|
|
NSLayoutConstraint.activate([
|
|
|
chromeContainer.leadingAnchor.constraint(equalTo: leadingAnchor),
|
|
|
@@ -340,12 +335,20 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
|
chromeContainer.topAnchor.constraint(equalTo: topAnchor),
|
|
|
chromeContainer.bottomAnchor.constraint(equalTo: bottomAnchor),
|
|
|
|
|
|
- contentStack.leadingAnchor.constraint(equalTo: chromeContainer.leadingAnchor),
|
|
|
- contentStack.trailingAnchor.constraint(equalTo: chromeContainer.trailingAnchor),
|
|
|
- contentStack.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor),
|
|
|
- contentStack.bottomAnchor.constraint(equalTo: chromeContainer.bottomAnchor),
|
|
|
+ panelsRow.leadingAnchor.constraint(equalTo: chromeContainer.leadingAnchor, constant: 12),
|
|
|
+ panelsRow.trailingAnchor.constraint(equalTo: chromeContainer.trailingAnchor, constant: -20),
|
|
|
+ panelsRow.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor, constant: 10),
|
|
|
+ panelsRow.bottomAnchor.constraint(equalTo: chromeContainer.bottomAnchor, constant: -20),
|
|
|
|
|
|
+ sidebar.leadingAnchor.constraint(equalTo: panelsRow.leadingAnchor),
|
|
|
+ sidebar.topAnchor.constraint(equalTo: panelsRow.topAnchor),
|
|
|
+ sidebar.bottomAnchor.constraint(equalTo: panelsRow.bottomAnchor),
|
|
|
sidebar.widthAnchor.constraint(equalToConstant: 218),
|
|
|
+
|
|
|
+ mainHost.leadingAnchor.constraint(equalTo: sidebar.trailingAnchor, constant: 10),
|
|
|
+ mainHost.trailingAnchor.constraint(equalTo: panelsRow.trailingAnchor),
|
|
|
+ mainHost.topAnchor.constraint(equalTo: panelsRow.topAnchor),
|
|
|
+ mainHost.bottomAnchor.constraint(equalTo: panelsRow.bottomAnchor),
|
|
|
mainHost.widthAnchor.constraint(greaterThanOrEqualToConstant: 720),
|
|
|
|
|
|
mainOverlay.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
|