From a4af5d51e8fbb8a0e53f98aa9f9e238536aaba24 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Fri, 12 Jun 2026 21:08:39 +0800
Subject: [PATCH] Render split view spaces with ordered app halves
---
C1.source/Sources/Aligner/QuickSwitchSessionController.swift | 29 ++++++++++++++++++++++++++---
1 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/C1.source/Sources/Aligner/QuickSwitchSessionController.swift b/C1.source/Sources/Aligner/QuickSwitchSessionController.swift
index 51ff663..645a35b 100644
--- a/C1.source/Sources/Aligner/QuickSwitchSessionController.swift
+++ b/C1.source/Sources/Aligner/QuickSwitchSessionController.swift
@@ -19,7 +19,7 @@
private let windowCloseService: any WindowCloseServiceProtocol
private let systemCriticalWindowDetector: any SystemCriticalWindowDetecting
private let disableScreenshotRefresh: Bool
- private let waterfallViewMode: QuickSwitchWaterfallViewMode
+ private var waterfallViewMode: QuickSwitchWaterfallViewMode
private var closeConfirmationRequired: Bool
private let onCloseConfirmationDisabled: (() -> Void)?
private let debugOverlayWidth: CGFloat?
@@ -86,6 +86,7 @@
private var lifecycleResidualOverlayWindows = 0
private var lifecycleResidualVisibleOverlayWindows = 0
var onSnapshotUpdated: (() -> Void)?
+ var onOpenSettings: (() -> Void)?
private struct PendingCloseVerification {
let request: QuickSwitchCloseRequest
@@ -212,6 +213,9 @@
view.onBackgroundClick = { [weak self] in
self?.handleBackgroundClick() ?? false
}
+ view.onOpenSettings = { [weak self] in
+ self?.onOpenSettings?()
+ }
view.setSuppressEventInput(!debugMouseSequence.isEmpty || !debugKeySequence.isEmpty)
view.onRequestClose = { [weak self] request in
self?.requestClose(request)
@@ -277,6 +281,23 @@
func retriggerFromShortcut() {
DevelopmentDiagnostics.log("quickSwitch.session.retriggerFromShortcut")
show()
+ }
+
+ func setWaterfallViewMode(_ mode: QuickSwitchWaterfallViewMode) {
+ guard waterfallViewMode != mode else { return }
+
+ waterfallViewMode = mode
+ DevelopmentDiagnostics.log("quickSwitch.session.waterfallViewModeChanged", [
+ "mode": mode.rawValue,
+ "visible": isVisible,
+ "hasViewModel": currentViewModel != nil
+ ])
+
+ view.setWaterfallViewMode(mode)
+ if isVisible, let currentViewModel {
+ view.applyProjected(viewModel: currentViewModel)
+ }
+ onSnapshotUpdated?()
}
func reportDictionary() -> [String: Any] {
@@ -823,12 +844,12 @@
"result": Self.closeResultString(result)
])
if result == .requested {
- suppressCloseTarget(request)
DevelopmentDiagnostics.log("quickSwitch.close.request.refreshAfterClose", [
"targetKind": request.kindDescription,
"appGroupIndex": request.appGroupIndex,
"appName": request.appName,
- "windowID": request.windowID
+ "windowID": request.windowID,
+ "optimisticRemove": false
])
pendingCloseVerification = PendingCloseVerification(
request: request,
@@ -1457,6 +1478,7 @@
let fixtureCandidateFiltering: Bool
let fixtureActivation: Bool
let fixtureSpaceFilter: Bool
+ let fixtureSplitView: Bool
let debugHoveredAppGroupIndex: Int?
let debugOverlayWidth: CGFloat?
let debugKeySequence: [String]
@@ -1485,6 +1507,7 @@
fixtureCandidateFiltering: arguments.contains("--round01-fixture-candidate-filtering"),
fixtureActivation: arguments.contains("--round01-fixture-window-activation"),
fixtureSpaceFilter: arguments.contains("--round01-fixture-space-filter"),
+ fixtureSplitView: arguments.contains("--round01-fixture-split-view"),
debugHoveredAppGroupIndex: intValue(for: "--round01-debug-hover-app-index", in: arguments),
debugOverlayWidth: cgFloatValue(for: "--round01-debug-overlay-width", in: arguments),
debugKeySequence: stringListValue(for: "--round01-debug-key-sequence", in: arguments),
--
Gitblit v1.9.3