|
|
@@ -80,7 +80,8 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
80
|
80
|
])
|
|
81
|
81
|
}
|
|
82
|
82
|
|
|
83
|
|
- private let contentStack = NSStackView()
|
|
|
83
|
+ /// Horizontal row for sidebar + main; plain view + constraints keep both panels top/bottom aligned (stack view height alignment was inconsistent).
|
|
|
84
|
+ private let panelsRow = NSView()
|
|
84
|
85
|
private let chromeContainer = NSView()
|
|
85
|
86
|
private let sidebar = NSStackView()
|
|
86
|
87
|
private let mainHost = NSView()
|
|
|
@@ -208,13 +209,7 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
208
|
209
|
wantsLayer = true
|
|
209
|
210
|
layer?.backgroundColor = Theme.pageBackground.cgColor
|
|
210
|
211
|
|
|
211
|
|
- contentStack.orientation = .horizontal
|
|
212
|
|
- contentStack.spacing = 10
|
|
213
|
|
- contentStack.distribution = .fill
|
|
214
|
|
- contentStack.translatesAutoresizingMaskIntoConstraints = false
|
|
215
|
|
- contentStack.alignment = .height
|
|
216
|
|
- // Tighter chrome insets so panels sit closer to the window edges (especially leading / top under the title bar).
|
|
217
|
|
- contentStack.edgeInsets = NSEdgeInsets(top: 10, left: 12, bottom: 20, right: 20)
|
|
|
212
|
+ panelsRow.translatesAutoresizingMaskIntoConstraints = false
|
|
218
|
213
|
|
|
219
|
214
|
chromeContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
220
|
215
|
chromeContainer.wantsLayer = true
|
|
|
@@ -222,7 +217,7 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
222
|
217
|
chromeContainer.layer?.cornerRadius = 18
|
|
223
|
218
|
chromeContainer.layer?.masksToBounds = true
|
|
224
|
219
|
addSubview(chromeContainer)
|
|
225
|
|
- chromeContainer.addSubview(contentStack)
|
|
|
220
|
+ chromeContainer.addSubview(panelsRow)
|
|
226
|
221
|
|
|
227
|
222
|
sidebar.orientation = .vertical
|
|
228
|
223
|
sidebar.spacing = 10
|
|
|
@@ -331,8 +326,8 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
331
|
326
|
mainOverlay.addArrangedSubview(chatBottomSpacer)
|
|
332
|
327
|
mainOverlay.addArrangedSubview(searchBarShadowHost)
|
|
333
|
328
|
|
|
334
|
|
- contentStack.addArrangedSubview(sidebar)
|
|
335
|
|
- contentStack.addArrangedSubview(mainHost)
|
|
|
329
|
+ panelsRow.addSubview(sidebar)
|
|
|
330
|
+ panelsRow.addSubview(mainHost)
|
|
336
|
331
|
|
|
337
|
332
|
NSLayoutConstraint.activate([
|
|
338
|
333
|
chromeContainer.leadingAnchor.constraint(equalTo: leadingAnchor),
|
|
|
@@ -340,12 +335,20 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
340
|
335
|
chromeContainer.topAnchor.constraint(equalTo: topAnchor),
|
|
341
|
336
|
chromeContainer.bottomAnchor.constraint(equalTo: bottomAnchor),
|
|
342
|
337
|
|
|
343
|
|
- contentStack.leadingAnchor.constraint(equalTo: chromeContainer.leadingAnchor),
|
|
344
|
|
- contentStack.trailingAnchor.constraint(equalTo: chromeContainer.trailingAnchor),
|
|
345
|
|
- contentStack.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor),
|
|
346
|
|
- contentStack.bottomAnchor.constraint(equalTo: chromeContainer.bottomAnchor),
|
|
|
338
|
+ panelsRow.leadingAnchor.constraint(equalTo: chromeContainer.leadingAnchor, constant: 12),
|
|
|
339
|
+ panelsRow.trailingAnchor.constraint(equalTo: chromeContainer.trailingAnchor, constant: -20),
|
|
|
340
|
+ panelsRow.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor, constant: 10),
|
|
|
341
|
+ panelsRow.bottomAnchor.constraint(equalTo: chromeContainer.bottomAnchor, constant: -20),
|
|
347
|
342
|
|
|
|
343
|
+ sidebar.leadingAnchor.constraint(equalTo: panelsRow.leadingAnchor),
|
|
|
344
|
+ sidebar.topAnchor.constraint(equalTo: panelsRow.topAnchor),
|
|
|
345
|
+ sidebar.bottomAnchor.constraint(equalTo: panelsRow.bottomAnchor),
|
|
348
|
346
|
sidebar.widthAnchor.constraint(equalToConstant: 218),
|
|
|
347
|
+
|
|
|
348
|
+ mainHost.leadingAnchor.constraint(equalTo: sidebar.trailingAnchor, constant: 10),
|
|
|
349
|
+ mainHost.trailingAnchor.constraint(equalTo: panelsRow.trailingAnchor),
|
|
|
350
|
+ mainHost.topAnchor.constraint(equalTo: panelsRow.topAnchor),
|
|
|
351
|
+ mainHost.bottomAnchor.constraint(equalTo: panelsRow.bottomAnchor),
|
|
349
|
352
|
mainHost.widthAnchor.constraint(greaterThanOrEqualToConstant: 720),
|
|
350
|
353
|
|
|
351
|
354
|
mainOverlay.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
|