From 146fbcf6430d2513df7fb536c7e9ace81f1e57b9 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 09 Jun 2026 21:45:32 +0800
Subject: [PATCH] Fix Quick Switch grouped display visuals
---
C1.source/Sources/Aligner/QuickSwitchSnapshotLoader.swift | 67 ++++++++++++++++++++++++++-------
1 files changed, 52 insertions(+), 15 deletions(-)
diff --git a/C1.source/Sources/Aligner/QuickSwitchSnapshotLoader.swift b/C1.source/Sources/Aligner/QuickSwitchSnapshotLoader.swift
index 7421c9f..8d45239 100644
--- a/C1.source/Sources/Aligner/QuickSwitchSnapshotLoader.swift
+++ b/C1.source/Sources/Aligner/QuickSwitchSnapshotLoader.swift
@@ -62,11 +62,18 @@
private let appCount: Int
private let windowsPerApp: Int
private let mode: FixtureQuickSwitchMode
+ private let usesMultipleDisplays: Bool
- init(appCount: Int, windowsPerApp: Int = 1, mode: FixtureQuickSwitchMode = .layout) {
+ init(
+ appCount: Int,
+ windowsPerApp: Int = 1,
+ mode: FixtureQuickSwitchMode = .layout,
+ usesMultipleDisplays: Bool = false
+ ) {
self.appCount = max(1, appCount)
self.windowsPerApp = max(1, windowsPerApp)
self.mode = mode
+ self.usesMultipleDisplays = usesMultipleDisplays
}
func snapshot() throws -> QuickSwitchSnapshotLoad {
@@ -81,18 +88,8 @@
}
private func layoutSnapshot() -> QuickSwitchSnapshotLoad {
- let displayUUID = "fixture-display-a"
- let displays = [
- AlignerDisplay(
- uuid: displayUUID,
- physical: true,
- spaces: [
- AlignerSpace(id: 1, type: .user, displayUUID: displayUUID, index: 1),
- AlignerSpace(id: 2, type: .fullscreen, displayUUID: displayUUID, index: 2),
- AlignerSpace(id: 3, type: .user, displayUUID: displayUUID, index: 3)
- ]
- )
- ]
+ let displays = layoutDisplays()
+ let spaceIDs: [UInt64] = usesMultipleDisplays ? [1, 2, 3, 4, 5] : [1, 2, 3]
let windows = (0..<appCount).flatMap { index in
let app = AlignerApp(
bundleIdentifier: "com.example.fixture.\(String(format: "%03d", index))",
@@ -103,7 +100,9 @@
return (0..<windowsPerApp).map { windowIndex in
let spaceSeed = index + windowIndex
- let spaceID = spaceSeed % 5 == 0 ? UInt64(2) : UInt64(spaceSeed % 2 == 0 ? 1 : 3)
+ let spaceID = usesMultipleDisplays
+ ? spaceIDs[spaceSeed % spaceIDs.count]
+ : UInt64(spaceSeed % 5 == 0 ? 2 : spaceSeed % 2 == 0 ? 1 : 3)
return AlignerWindow(
id: UInt32(10_000 + index * 100 + windowIndex),
app: app,
@@ -116,10 +115,48 @@
return QuickSwitchSnapshotLoad(
snapshot: QuickSwitchSnapshotBuilder.snapshot(displays: displays, windows: windows),
- currentSpaceIDs: [2]
+ currentSpaceIDs: usesMultipleDisplays ? [2, 4] : [2]
)
}
+ private func layoutDisplays() -> [AlignerDisplay] {
+ let displayAUUID = "fixture-display-a"
+ guard usesMultipleDisplays else {
+ return [
+ AlignerDisplay(
+ uuid: displayAUUID,
+ physical: true,
+ spaces: [
+ AlignerSpace(id: 1, type: .user, displayUUID: displayAUUID, index: 1),
+ AlignerSpace(id: 2, type: .fullscreen, displayUUID: displayAUUID, index: 2),
+ AlignerSpace(id: 3, type: .user, displayUUID: displayAUUID, index: 3)
+ ]
+ )
+ ]
+ }
+
+ let displayBUUID = "fixture-display-b"
+ return [
+ AlignerDisplay(
+ uuid: displayAUUID,
+ physical: true,
+ spaces: [
+ AlignerSpace(id: 1, type: .user, displayUUID: displayAUUID, index: 1),
+ AlignerSpace(id: 2, type: .fullscreen, displayUUID: displayAUUID, index: 2),
+ AlignerSpace(id: 3, type: .user, displayUUID: displayAUUID, index: 3)
+ ]
+ ),
+ AlignerDisplay(
+ uuid: displayBUUID,
+ physical: true,
+ spaces: [
+ AlignerSpace(id: 4, type: .user, displayUUID: displayBUUID, index: 1),
+ AlignerSpace(id: 5, type: .user, displayUUID: displayBUUID, index: 2)
+ ]
+ )
+ ]
+ }
+
private func candidateFilteringSnapshot() -> QuickSwitchSnapshotLoad {
let displayUUID = "fixture-display-a"
let displays = [
--
Gitblit v1.9.3