From 0a64c8163445e27f5123fdcf083fb3a5449b5c49 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sat, 20 Jun 2026 03:43:08 +0800
Subject: [PATCH] Fix dark Space hover readability

---
 C1.source/Sources/Aligner/AlignerApplicationDelegate.swift |   67 +++++++++++++++++++++++++++++++--
 1 files changed, 63 insertions(+), 4 deletions(-)

diff --git a/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift b/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
index ec6e5bf..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()
@@ -700,6 +710,11 @@
             ?? preferenceStore.read().quickSwitchWaterfallViewMode
     }
 
+    private func quickSwitchThemePreference() -> ThemePreference {
+        let theme = preferenceStore.read().theme
+        return theme == .dark ? .dark : .light
+    }
+
     private func quickSwitchSpaceActivationService() -> any SpaceActivationServiceProtocol {
         if round1QuickSwitchOptions.debugWindowActivation {
             return DebugSpaceActivationService()
@@ -749,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