From 81b5a5f847e74fe1106829b13db2cccda8dd5798 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Fri, 19 Jun 2026 19:48:59 +0800
Subject: [PATCH] Fix horizontal app index key handling

---
 C1.source/Sources/AlignerCore/Preferences/AlignerPreferences.swift |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/C1.source/Sources/AlignerCore/Preferences/AlignerPreferences.swift b/C1.source/Sources/AlignerCore/Preferences/AlignerPreferences.swift
index 264f57b..716112b 100644
--- a/C1.source/Sources/AlignerCore/Preferences/AlignerPreferences.swift
+++ b/C1.source/Sources/AlignerCore/Preferences/AlignerPreferences.swift
@@ -4,6 +4,7 @@
     case schemaVersion = "schemaVersion"
     case showMinimizedWindows = "quickSwitch.showMinimizedWindows"
     case showFullscreenWindows = "quickSwitch.showFullscreenWindows"
+    case quickSwitchWaterfallViewMode = "quickSwitch.waterfallViewMode"
     case theme = "appearance.theme"
     case language = "appearance.language"
     case spaceDisplayStrategy = "spaces.displayStrategy"
@@ -30,9 +31,15 @@
     case currentSpaceOnly
 }
 
+public enum QuickSwitchWaterfallViewMode: String, CaseIterable, Equatable, Sendable {
+    case verticalColumns
+    case horizontalMasonry
+}
+
 public struct AlignerPreferences: Equatable, Sendable {
     public let showMinimizedWindows: Bool
     public let showFullscreenWindows: Bool
+    public let quickSwitchWaterfallViewMode: QuickSwitchWaterfallViewMode
     public let theme: ThemePreference
     public let language: LanguagePreference
     public let spaceDisplayStrategy: SpaceDisplayStrategy
@@ -40,12 +47,14 @@
     public init(
         showMinimizedWindows: Bool,
         showFullscreenWindows: Bool,
+        quickSwitchWaterfallViewMode: QuickSwitchWaterfallViewMode,
         theme: ThemePreference,
         language: LanguagePreference,
         spaceDisplayStrategy: SpaceDisplayStrategy
     ) {
         self.showMinimizedWindows = showMinimizedWindows
         self.showFullscreenWindows = showFullscreenWindows
+        self.quickSwitchWaterfallViewMode = quickSwitchWaterfallViewMode
         self.theme = theme
         self.language = language
         self.spaceDisplayStrategy = spaceDisplayStrategy
@@ -53,11 +62,12 @@
 }
 
 public enum PreferenceSchema {
-    public static let version = 1
+    public static let version = 2
 
     public static let defaults = AlignerPreferences(
         showMinimizedWindows: true,
         showFullscreenWindows: true,
+        quickSwitchWaterfallViewMode: .verticalColumns,
         theme: .system,
         language: .system,
         spaceDisplayStrategy: .includeVisibleAndFullscreen
@@ -68,6 +78,7 @@
             PreferenceKey.schemaVersion.storageKey: version,
             PreferenceKey.showMinimizedWindows.storageKey: defaults.showMinimizedWindows,
             PreferenceKey.showFullscreenWindows.storageKey: defaults.showFullscreenWindows,
+            PreferenceKey.quickSwitchWaterfallViewMode.storageKey: defaults.quickSwitchWaterfallViewMode.rawValue,
             PreferenceKey.theme.storageKey: defaults.theme.rawValue,
             PreferenceKey.language.storageKey: defaults.language.rawValue,
             PreferenceKey.spaceDisplayStrategy.storageKey: defaults.spaceDisplayStrategy.rawValue
@@ -110,6 +121,10 @@
         return AlignerPreferences(
             showMinimizedWindows: userDefaults.bool(forKey: PreferenceKey.showMinimizedWindows.storageKey),
             showFullscreenWindows: userDefaults.bool(forKey: PreferenceKey.showFullscreenWindows.storageKey),
+            quickSwitchWaterfallViewMode: rawValue(
+                for: .quickSwitchWaterfallViewMode,
+                default: PreferenceSchema.defaults.quickSwitchWaterfallViewMode
+            ),
             theme: rawValue(for: .theme, default: PreferenceSchema.defaults.theme),
             language: rawValue(for: .language, default: PreferenceSchema.defaults.language),
             spaceDisplayStrategy: rawValue(
@@ -123,6 +138,10 @@
         userDefaults.set(PreferenceSchema.version, forKey: PreferenceKey.schemaVersion.storageKey)
         userDefaults.set(preferences.showMinimizedWindows, forKey: PreferenceKey.showMinimizedWindows.storageKey)
         userDefaults.set(preferences.showFullscreenWindows, forKey: PreferenceKey.showFullscreenWindows.storageKey)
+        userDefaults.set(
+            preferences.quickSwitchWaterfallViewMode.rawValue,
+            forKey: PreferenceKey.quickSwitchWaterfallViewMode.storageKey
+        )
         userDefaults.set(preferences.theme.rawValue, forKey: PreferenceKey.theme.storageKey)
         userDefaults.set(preferences.language.rawValue, forKey: PreferenceKey.language.storageKey)
         userDefaults.set(preferences.spaceDisplayStrategy.rawValue, forKey: PreferenceKey.spaceDisplayStrategy.storageKey)

--
Gitblit v1.9.3