Explorar el Código

Force narrower default window size on launch.

Made-with: Cursor
huzaifahayat12 hace 2 semanas
padre
commit
d95ba4c3ce
Se han modificado 1 ficheros con 18 adiciones y 4 borrados
  1. 18 4
      meetings_app/ViewController.swift

+ 18 - 4
meetings_app/ViewController.swift

@@ -33,6 +33,8 @@ private enum SettingsAction: Int {
33 33
 final class ViewController: NSViewController {
34 34
     private let palette = Palette()
35 35
     private let typography = Typography()
36
+    private let launchContentSize = NSSize(width: 920, height: 690)
37
+    private let launchMinContentSize = NSSize(width: 760, height: 600)
36 38
 
37 39
     private var mainContentHost: NSView?
38 40
     private var sidebarRowViews: [SidebarPage: NSView] = [:]
@@ -80,11 +82,23 @@ final class ViewController: NSViewController {
80 82
 
81 83
     override func viewDidAppear() {
82 84
         super.viewDidAppear()
83
-        view.window?.setContentSize(NSSize(width: 1120, height: 690))
84
-        view.window?.minSize = NSSize(width: 940, height: 600)
85 85
         applyWindowTitle(for: selectedSidebarPage)
86
-        if let window = view.window {
87
-            installCenteredTitleIfNeeded(on: window)
86
+        guard let window = view.window else { return }
87
+
88
+        // Ensure launch size is applied even when macOS tries to restore prior window state.
89
+        window.isRestorable = false
90
+        window.setFrameAutosaveName("")
91
+
92
+        DispatchQueue.main.async { [weak self, weak window] in
93
+            guard let self, let window else { return }
94
+
95
+            let frameSize = window.frameRect(forContentRect: NSRect(origin: .zero, size: self.launchContentSize)).size
96
+            var newFrame = window.frame
97
+            newFrame.size = frameSize
98
+            window.setFrame(newFrame, display: true)
99
+
100
+            window.minSize = window.frameRect(forContentRect: NSRect(origin: .zero, size: self.launchMinContentSize)).size
101
+            self.installCenteredTitleIfNeeded(on: window)
88 102
         }
89 103
     }
90 104