From a3d82000231b8a8e3709e1a6708dbbdaf81412dc Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sat, 20 Jun 2026 12:32:28 +0800
Subject: [PATCH] Add progressive window shortcut filtering
---
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