From 2774b3ea8fbcc13dc69bbd2cde9e641eeb105679 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 11 Jun 2026 19:06:33 +0800
Subject: [PATCH] Add uncategorized layout reset option

---
 src/Apptag/ApptagApp.swift |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/Apptag/ApptagApp.swift b/src/Apptag/ApptagApp.swift
index e155bc6..c88dc4a 100644
--- a/src/Apptag/ApptagApp.swift
+++ b/src/Apptag/ApptagApp.swift
@@ -17,7 +17,7 @@
         Settings {
             PreferencesView()
         }
-        .defaultSize(width: 1000, height: 480)
+        .defaultSize(width: 1000, height: 640)
         .commands {
             CommandGroup(replacing: .systemServices) { }
             CommandGroup(replacing: .appVisibility) { }
@@ -42,6 +42,7 @@
     private static let launcherOverlayLevel = NSWindow.Level(rawValue: NSWindow.Level.mainMenu.rawValue - 1)
     private static let overlayDefaultLevel = launcherOverlayLevel
     private static let overlayTextInputLevel = launcherOverlayLevel
+    private static let settingsContentSize = NSSize(width: 1000, height: 640)
 
     private var statusItem: NSStatusItem?
     private var overlayKeyMonitor: Any?
@@ -1295,15 +1296,19 @@
     /// Settings must always appear centered over the current overlay view and float above it.
     private func prepareSettingsWindow(_ window: NSWindow) {
         dismissQuickSearchIfNeeded()
-        let settingsSize = NSSize(width: 1000, height: 480)
+        let settingsSize = Self.settingsContentSize
+        let settingsFrameSize = window.frameRect(
+            forContentRect: NSRect(origin: .zero, size: settingsSize)
+        ).size
         window.identifier = NSUserInterfaceItemIdentifier("TagLauncherPreferencesWindow")
-        window.minSize = settingsSize
-        window.maxSize = settingsSize
-        if abs(window.frame.width - settingsSize.width) > 0.5 || abs(window.frame.height - settingsSize.height) > 0.5 {
-            window.setFrame(
-                NSRect(origin: window.frame.origin, size: settingsSize),
-                display: false
-            )
+        window.contentMinSize = settingsSize
+        window.contentMaxSize = settingsSize
+        window.minSize = settingsFrameSize
+        window.maxSize = settingsFrameSize
+        let currentContentSize = window.contentView?.bounds.size ?? window.contentLayoutRect.size
+        if abs(currentContentSize.width - settingsSize.width) > 0.5
+            || abs(currentContentSize.height - settingsSize.height) > 0.5 {
+            window.setContentSize(settingsSize)
         }
 
         if let overlayWindow, overlayWindow.isVisible {
@@ -1650,9 +1655,8 @@
             return
         }
 
-        let settingsSize = NSSize(width: 1000, height: 480)
         let window = NSWindow(
-            contentRect: NSRect(origin: .zero, size: settingsSize),
+            contentRect: NSRect(origin: .zero, size: Self.settingsContentSize),
             styleMask: [.titled, .closable],
             backing: .buffered,
             defer: false

--
Gitblit v1.9.3