Sfoglia il codice sorgente

Align sidebar and main panel with explicit layout constraints.

Replace the horizontal NSStackView with a panelsRow container so the sidebar and mainHost share the same top and bottom anchors, preserving prior chrome insets and column spacing.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 3 settimane fa
parent
commit
b120eafd0a
1 ha cambiato i file con 18 aggiunte e 15 eliminazioni
  1. 18 15
      App for Indeed/Views/DashboardView.swift

+ 18 - 15
App for Indeed/Views/DashboardView.swift

@@ -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
     private let chromeContainer = NSView()
85
     private let chromeContainer = NSView()
85
     private let sidebar = NSStackView()
86
     private let sidebar = NSStackView()
86
     private let mainHost = NSView()
87
     private let mainHost = NSView()
@@ -208,13 +209,7 @@ final class DashboardView: NSView, NSTextFieldDelegate {
208
         wantsLayer = true
209
         wantsLayer = true
209
         layer?.backgroundColor = Theme.pageBackground.cgColor
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
         chromeContainer.translatesAutoresizingMaskIntoConstraints = false
214
         chromeContainer.translatesAutoresizingMaskIntoConstraints = false
220
         chromeContainer.wantsLayer = true
215
         chromeContainer.wantsLayer = true
@@ -222,7 +217,7 @@ final class DashboardView: NSView, NSTextFieldDelegate {
222
         chromeContainer.layer?.cornerRadius = 18
217
         chromeContainer.layer?.cornerRadius = 18
223
         chromeContainer.layer?.masksToBounds = true
218
         chromeContainer.layer?.masksToBounds = true
224
         addSubview(chromeContainer)
219
         addSubview(chromeContainer)
225
-        chromeContainer.addSubview(contentStack)
220
+        chromeContainer.addSubview(panelsRow)
226
 
221
 
227
         sidebar.orientation = .vertical
222
         sidebar.orientation = .vertical
228
         sidebar.spacing = 10
223
         sidebar.spacing = 10
@@ -331,8 +326,8 @@ final class DashboardView: NSView, NSTextFieldDelegate {
331
         mainOverlay.addArrangedSubview(chatBottomSpacer)
326
         mainOverlay.addArrangedSubview(chatBottomSpacer)
332
         mainOverlay.addArrangedSubview(searchBarShadowHost)
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
         NSLayoutConstraint.activate([
332
         NSLayoutConstraint.activate([
338
             chromeContainer.leadingAnchor.constraint(equalTo: leadingAnchor),
333
             chromeContainer.leadingAnchor.constraint(equalTo: leadingAnchor),
@@ -340,12 +335,20 @@ final class DashboardView: NSView, NSTextFieldDelegate {
340
             chromeContainer.topAnchor.constraint(equalTo: topAnchor),
335
             chromeContainer.topAnchor.constraint(equalTo: topAnchor),
341
             chromeContainer.bottomAnchor.constraint(equalTo: bottomAnchor),
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
             sidebar.widthAnchor.constraint(equalToConstant: 218),
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
             mainHost.widthAnchor.constraint(greaterThanOrEqualToConstant: 720),
352
             mainHost.widthAnchor.constraint(greaterThanOrEqualToConstant: 720),
350
 
353
 
351
             mainOverlay.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
354
             mainOverlay.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),