From 7a4f911c64b552081d957e826f32d90b2b11c858 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 04 Jun 2026 19:38:13 +0800
Subject: [PATCH] Make quick switch clicks activate targets
---
C1.source/Sources/Aligner/QuickSwitchRootView.swift | 42 +++++++++++++++++++++++++++++++++++++-----
1 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/C1.source/Sources/Aligner/QuickSwitchRootView.swift b/C1.source/Sources/Aligner/QuickSwitchRootView.swift
index f179043..046f96a 100644
--- a/C1.source/Sources/Aligner/QuickSwitchRootView.swift
+++ b/C1.source/Sources/Aligner/QuickSwitchRootView.swift
@@ -359,6 +359,9 @@
if isHoverCommand(command) {
hoverResponseLatencyMilliseconds.append(elapsed)
}
+ if lastCommitSource == .mouse {
+ break
+ }
}
}
@@ -723,7 +726,17 @@
"spaceID": segment.space.id,
"label": segment.space.label
])
- focusSpace(segment.space.id, persistent: true)
+ lastSpaceLaneClickSpaceID = segment.space.id
+
+ guard let firstCard = firstWaterfallCard(inSpaceID: segment.space.id) else {
+ DevelopmentDiagnostics.log("quickSwitch.view.clickSpaceLane.emptySpaceUnsupported", [
+ "spaceID": segment.space.id,
+ "label": segment.space.label
+ ])
+ return
+ }
+
+ commitWindowCard(firstCard, trigger: "spaceLane")
}
private func focusSpace(_ spaceID: UInt64, persistent: Bool) {
@@ -774,12 +787,14 @@
columnSelectionHistory[nextSelection.appGroupIndex] = nextSelection.windowIndex
lastAppShelfClickChangedSelection = previousSelection != nextSelection
ensureWaterfallSelectionVisible(nextSelection, horizontalIntent: .alignWithAppShelf(animated: true))
+ updateHoverState(appGroupIndex: appGroupIndex, windowID: nil, spaceID: nil)
+ commitWindowCard(firstCard, trigger: "appShelf")
} else {
lastAppShelfClickChangedSelection = false
ensureWaterfallColumnVisible(column)
+ updateHoverState(appGroupIndex: appGroupIndex, windowID: nil, spaceID: nil)
+ needsLayout = true
}
- updateHoverState(appGroupIndex: appGroupIndex, windowID: nil, spaceID: nil)
- needsLayout = true
}
private func scrollAppShelf(to targetOffset: CGFloat) {
@@ -821,12 +836,17 @@
private func clickWindowCard(_ card: WaterfallCardLayers) {
hoverWindowCard(card)
+ commitWindowCard(card, trigger: "windowCard")
+ }
+
+ private func commitWindowCard(_ card: WaterfallCardLayers, trigger: String) {
let selection = QuickSwitchSelection(
appGroupIndex: card.item.appGroupIndex,
windowIndex: card.item.windowIndex,
windowID: card.item.window.id
)
- DevelopmentDiagnostics.log("quickSwitch.view.clickWindowCard", [
+ DevelopmentDiagnostics.log("quickSwitch.view.commitMouseWindow", [
+ "trigger": trigger,
"appGroupIndex": selection.appGroupIndex,
"windowIndex": selection.windowIndex,
"windowID": selection.windowID,
@@ -1231,7 +1251,7 @@
glassLayer.addSublayer(laneLayer)
laneLayer.addSublayer(spaceLaneContentLayer)
- shelfLayer.backgroundColor = NSColor.controlBackgroundColor.withAlphaComponent(0.60).cgColor
+ shelfLayer.backgroundColor = NSColor.clear.cgColor
shelfLayer.cornerRadius = 16
shelfLayer.masksToBounds = true
glassLayer.addSublayer(shelfLayer)
@@ -1934,6 +1954,18 @@
.sorted()
}
+ private func firstWaterfallCard(inSpaceID spaceID: UInt64) -> WaterfallCardLayers? {
+ for column in waterfallColumns.sorted(by: { $0.column.appGroupIndex < $1.column.appGroupIndex }) {
+ if let card = column.cards
+ .sorted(by: { $0.item.windowIndex < $1.item.windowIndex })
+ .first(where: { $0.item.primarySpaceID == spaceID }) {
+ return card
+ }
+ }
+
+ return nil
+ }
+
private func spaceFocusWindowCount(for appGroupIndex: Int) -> Int {
guard let activeSpaceFocusID else { return 0 }
--
Gitblit v1.9.3