From cba722f8a207982ade9e941eca3e6070e8705749 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sat, 20 Jun 2026 13:01:49 +0800
Subject: [PATCH] Commit single-window app shortcuts on first key
---
C1.source/Sources/Aligner/AlignerApplicationDelegate.swift | 71 +++++++++++++++++++++++++++++++++--
1 files changed, 67 insertions(+), 4 deletions(-)
diff --git a/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift b/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
index 3334d05..89c2a16 100644
--- a/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
+++ b/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
@@ -481,6 +481,7 @@
windowCloseService: quickSwitchWindowCloseService(),
disableScreenshotRefresh: round1QuickSwitchOptions.disableScreenshotRefresh,
waterfallViewMode: quickSwitchWaterfallViewMode(),
+ theme: quickSwitchThemePreference(),
closeConfirmationRequired: quickSwitchConfirmBeforeClose,
onCloseConfirmationDisabled: { [weak self] in
self?.setQuickSwitchConfirmBeforeClose(false)
@@ -494,8 +495,11 @@
controller.onSnapshotUpdated = { [weak self] in
self?.writeQuickSwitchReportIfNeeded()
}
- controller.onOpenSettings = { [weak self] in
- self?.showSettingsFromQuickSwitch()
+ controller.onToggleWaterfallViewMode = { [weak self] in
+ self?.toggleQuickSwitchWaterfallViewModeFromQuickSwitch()
+ }
+ controller.onToggleTheme = { [weak self] in
+ self?.toggleQuickSwitchThemeFromQuickSwitch()
}
quickSwitchSessionController = controller
}
@@ -560,6 +564,7 @@
windowCloseService: quickSwitchWindowCloseService(),
disableScreenshotRefresh: round1QuickSwitchOptions.disableScreenshotRefresh,
waterfallViewMode: quickSwitchWaterfallViewMode(),
+ theme: quickSwitchThemePreference(),
closeConfirmationRequired: quickSwitchConfirmBeforeClose,
onCloseConfirmationDisabled: { [weak self] in
self?.setQuickSwitchConfirmBeforeClose(false)
@@ -573,8 +578,11 @@
controller.onSnapshotUpdated = { [weak self] in
self?.writeQuickSwitchReportIfNeeded()
}
- controller.onOpenSettings = { [weak self] in
- self?.showSettingsFromQuickSwitch()
+ controller.onToggleWaterfallViewMode = { [weak self] in
+ self?.toggleQuickSwitchWaterfallViewModeFromQuickSwitch()
+ }
+ controller.onToggleTheme = { [weak self] in
+ self?.toggleQuickSwitchThemeFromQuickSwitch()
}
quickSwitchSessionController = controller
}
@@ -607,6 +615,8 @@
let versionBuild = appVersionBuild()
report["preferenceWaterfallViewMode"] = preferenceStore.read().quickSwitchWaterfallViewMode.rawValue
report["resolvedWaterfallViewMode"] = quickSwitchWaterfallViewMode().rawValue
+ report["preferenceTheme"] = preferenceStore.read().theme.rawValue
+ report["resolvedQuickSwitchTheme"] = quickSwitchThemePreference().rawValue
report["aboutVersion"] = versionBuild.version
report["aboutBuild"] = versionBuild.build
report["statusMenu"] = statusMenuReportDictionary()
@@ -666,6 +676,10 @@
return FixtureQuickSwitchSnapshotLoader(appCount: 1, mode: .splitView)
}
+ if round1QuickSwitchOptions.fixtureMultiPageIdentity {
+ return FixtureQuickSwitchSnapshotLoader(appCount: 1, mode: .multiPageIdentity)
+ }
+
if let fixtureAppCount = round1QuickSwitchOptions.fixtureAppCount {
return FixtureQuickSwitchSnapshotLoader(
appCount: fixtureAppCount,
@@ -694,6 +708,11 @@
private func quickSwitchWaterfallViewMode() -> QuickSwitchWaterfallViewMode {
round1QuickSwitchOptions.waterfallViewMode
?? preferenceStore.read().quickSwitchWaterfallViewMode
+ }
+
+ private func quickSwitchThemePreference() -> ThemePreference {
+ let theme = preferenceStore.read().theme
+ return theme == .dark ? .dark : .light
}
private func quickSwitchSpaceActivationService() -> any SpaceActivationServiceProtocol {
@@ -745,6 +764,50 @@
])
}
+ private func toggleQuickSwitchWaterfallViewModeFromQuickSwitch() {
+ let currentMode = quickSwitchWaterfallViewMode()
+ let nextMode: QuickSwitchWaterfallViewMode = currentMode == .horizontalMasonry
+ ? .verticalColumns
+ : .horizontalMasonry
+ DevelopmentDiagnostics.log("app.quickSwitch.waterfallViewModeToggle", [
+ "currentMode": currentMode.rawValue,
+ "nextMode": nextMode.rawValue,
+ "quickSwitchVisible": quickSwitchSessionController?.isVisible ?? false
+ ])
+ setQuickSwitchWaterfallViewMode(nextMode)
+ }
+
+ private func setQuickSwitchThemePreference(_ theme: ThemePreference) {
+ let normalizedTheme: ThemePreference = theme == .dark ? .dark : .light
+ let preferences = preferenceStore.read()
+ let updatedPreferences = AlignerPreferences(
+ showMinimizedWindows: preferences.showMinimizedWindows,
+ showFullscreenWindows: preferences.showFullscreenWindows,
+ quickSwitchWaterfallViewMode: preferences.quickSwitchWaterfallViewMode,
+ theme: normalizedTheme,
+ language: preferences.language,
+ spaceDisplayStrategy: preferences.spaceDisplayStrategy
+ )
+ preferenceStore.write(updatedPreferences)
+ quickSwitchSessionController?.setTheme(normalizedTheme)
+ writeQuickSwitchReportIfNeeded()
+ DevelopmentDiagnostics.log("app.quickSwitch.themePreferenceChanged", [
+ "theme": normalizedTheme.rawValue,
+ "quickSwitchVisible": quickSwitchSessionController?.isVisible ?? false
+ ])
+ }
+
+ private func toggleQuickSwitchThemeFromQuickSwitch() {
+ let currentTheme = quickSwitchThemePreference()
+ let nextTheme: ThemePreference = currentTheme == .dark ? .light : .dark
+ DevelopmentDiagnostics.log("app.quickSwitch.themeToggle", [
+ "currentTheme": currentTheme.rawValue,
+ "nextTheme": nextTheme.rawValue,
+ "quickSwitchVisible": quickSwitchSessionController?.isVisible ?? false
+ ])
+ setQuickSwitchThemePreference(nextTheme)
+ }
+
private func appVersionBuild() -> (version: String, build: String) {
let info = Bundle.main.infoDictionary ?? [:]
let version = info["CFBundleShortVersionString"] as? String ?? "Unknown"
--
Gitblit v1.9.3