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/QuickSwitchRootView.swift | 78 +++++++++++++++++++-------------------
1 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/C1.source/Sources/Aligner/QuickSwitchRootView.swift b/C1.source/Sources/Aligner/QuickSwitchRootView.swift
index d8451c2..0b41426 100644
--- a/C1.source/Sources/Aligner/QuickSwitchRootView.swift
+++ b/C1.source/Sources/Aligner/QuickSwitchRootView.swift
@@ -283,7 +283,7 @@
static let columnMaxWidth: CGFloat = 292
static let contentHorizontalPadding: CGFloat = 0
static let columnHorizontalPadding: CGFloat = 0
- static let columnVerticalPadding: CGFloat = 12
+ static let columnVerticalPadding: CGFloat = 0
static let columnHeaderTextInset: CGFloat = 12
static let headerHeight: CGFloat = 34
static let cardHeight: CGFloat = 138
@@ -304,11 +304,11 @@
}
private enum SpaceLaneMetrics {
- static let horizontalPadding: CGFloat = 12
- static let groupGap: CGFloat = 30
- static let groupHorizontalPadding: CGFloat = 12
- static let groupVerticalPadding: CGFloat = 10
- static let segmentGap: CGFloat = 10
+ static let horizontalPadding: CGFloat = 0
+ static let groupGap: CGFloat = 36
+ static let groupHorizontalPadding: CGFloat = 24
+ static let groupVerticalPadding: CGFloat = 6
+ static let segmentGap: CGFloat = 12
static let segmentMinWidth: CGFloat = 96
static let segmentMaxWidth: CGFloat = 150
}
@@ -669,6 +669,8 @@
"glassBorderWidth": Double(glassLayer.borderWidth),
"glassShadowOpacity": Double(glassLayer.shadowOpacity),
"spaceLaneFrame": dictionary(from: laneLayer.frame),
+ "spaceLaneBackgroundColor": colorDictionary(from: laneLayer.backgroundColor),
+ "spaceLaneCornerRadius": Double(laneLayer.cornerRadius),
"spaceLaneContentWidth": Double(spaceLaneContentWidth),
"spaceLaneVisibleWidth": Double(laneLayer.bounds.width),
"spaceLaneMaxScrollOffset": Double(spaceLaneMaxScrollOffset),
@@ -1576,8 +1578,8 @@
glassLayer.shadowOpacity = 0
rootLayer.addSublayer(glassLayer)
- laneLayer.backgroundColor = NSColor.controlBackgroundColor.withAlphaComponent(0.68).cgColor
- laneLayer.cornerRadius = 16
+ laneLayer.backgroundColor = NSColor.clear.cgColor
+ laneLayer.cornerRadius = 0
laneLayer.masksToBounds = true
glassLayer.addSublayer(laneLayer)
laneLayer.addSublayer(spaceLaneContentLayer)
@@ -1822,11 +1824,11 @@
for display in currentViewModel?.displays ?? [] {
let groupContainer = CALayer()
groupContainer.name = display.displayLabel
- groupContainer.cornerRadius = 16
+ groupContainer.cornerRadius = 14
groupContainer.masksToBounds = false
- groupContainer.borderWidth = 1
- groupContainer.borderColor = NSColor.separatorColor.withAlphaComponent(0.26).cgColor
- groupContainer.backgroundColor = NSColor.windowBackgroundColor.withAlphaComponent(0.28).cgColor
+ groupContainer.borderWidth = 0
+ groupContainer.borderColor = NSColor.clear.cgColor
+ groupContainer.backgroundColor = NSColor.windowBackgroundColor.cgColor
groupContainer.shadowColor = NSColor.black.cgColor
groupContainer.shadowOpacity = 0
groupContainer.shadowRadius = 0
@@ -2033,7 +2035,8 @@
private func layoutSpaceLaneSegments() {
guard !spaceLaneDisplayGroups.isEmpty, !spaceLaneSegments.isEmpty else { return }
- let groupHeight = max(1, laneLayer.bounds.height - 16)
+ let groupOuterVerticalInset: CGFloat = 6
+ let groupHeight = max(1, laneLayer.bounds.height - groupOuterVerticalInset * 2)
let segmentHeight = max(1, groupHeight - SpaceLaneMetrics.groupVerticalPadding * 2)
let groupGapWidth = CGFloat(max(0, spaceLaneDisplayGroups.count - 1)) * SpaceLaneMetrics.groupGap
let segmentGapWidth = spaceLaneDisplayGroups.reduce(CGFloat(0)) { total, group in
@@ -2076,7 +2079,7 @@
let groupWidth = groupWidths[index]
group.containerLayer.frame = CGRect(
x: x,
- y: 8,
+ y: groupOuterVerticalInset,
width: groupWidth,
height: groupHeight
)
@@ -2114,29 +2117,14 @@
|| segment.space.id == windowHoverAssociatedSpaceID
}
let hasCurrentSegment = group.display.spaces.contains { $0.isCurrent }
- let hasWindows = group.display.spaces.contains { $0.windowCount > 0 }
- let background = hasActiveSegment
- ? accentTintedWindowBackground(fraction: 0.035, alpha: 0.62)
- : NSColor.windowBackgroundColor.withAlphaComponent(hasWindows ? 0.44 : 0.30)
-
- group.containerLayer.backgroundColor = background.cgColor
- group.containerLayer.borderColor = (hasActiveSegment
- ? spaceLaneOccupiedColor.withAlphaComponent(0.36)
- : hasCurrentSegment
- ? NSColor.labelColor.withAlphaComponent(0.22)
- : NSColor.separatorColor.withAlphaComponent(0.24)
- ).cgColor
- group.containerLayer.borderWidth = 1
- group.containerLayer.shadowOpacity = hasActiveSegment ? 0.12 : 0
- group.containerLayer.shadowRadius = hasActiveSegment ? 14 : 0
- group.containerLayer.shadowOffset = CGSize(width: 0, height: -3)
+ group.containerLayer.backgroundColor = NSColor.windowBackgroundColor.cgColor
+ group.containerLayer.borderColor = NSColor.clear.cgColor
+ group.containerLayer.borderWidth = 0
+ group.containerLayer.shadowOpacity = 0
+ group.containerLayer.shadowRadius = 0
+ group.containerLayer.shadowOffset = .zero
group.containerLayer.zPosition = hasActiveSegment ? 8 : hasCurrentSegment ? 4 : 0
- group.containerLayer.shadowPath = CGPath(
- roundedRect: group.containerLayer.bounds,
- cornerWidth: group.containerLayer.cornerRadius,
- cornerHeight: group.containerLayer.cornerRadius,
- transform: nil
- )
+ group.containerLayer.shadowPath = nil
}
private func applySpaceLaneVisualState(_ segment: SpaceLaneSegmentLayers) {
@@ -3457,7 +3445,7 @@
return NSColor.controlBackgroundColor.withAlphaComponent(0.36)
}
- return NSColor.labelColor.withAlphaComponent(space.isCurrent ? 0.07 : 0.05)
+ return NSColor.clear
}
private var spaceLaneOccupiedColor: NSColor {
@@ -3689,9 +3677,9 @@
private func fullscreenMarkerFrame(in segmentBounds: CGRect) -> CGRect {
CGRect(
x: 10,
- y: 12,
+ y: 30,
width: max(1, segmentBounds.width - 20),
- height: max(1, segmentBounds.height - 64)
+ height: max(1, segmentBounds.height - 58)
)
}
@@ -3778,6 +3766,13 @@
let visibleFrame = column.containerLayer.frame.offsetBy(dx: waterfallContentLayer.frame.minX, dy: 0)
let appGroupIndex = column.column.appGroupIndex
let isHovered = appGroupIndex == effectiveHoveredAppGroupIndex
+ let firstCardFrame = column.cards.first?.containerLayer.frame
+ let headerToFirstCardGap = firstCardFrame.map {
+ column.headerLayer.frame.minY - $0.maxY
+ }
+ let topToFirstCardGap = firstCardFrame.map {
+ column.containerLayer.bounds.height - $0.maxY
+ }
return [
"appGroupIndex": appGroupIndex,
@@ -3791,6 +3786,9 @@
"spaceFocusDirection": spaceFocusDirection(for: appGroupIndex),
"frame": dictionary(from: column.containerLayer.frame),
"visibleFrame": dictionary(from: visibleFrame),
+ "headerFrame": dictionary(from: column.headerLayer.frame),
+ "headerToFirstCardGap": headerToFirstCardGap.map(Double.init) ?? NSNull(),
+ "topToFirstCardGap": topToFirstCardGap.map(Double.init) ?? NSNull(),
"appNameFrame": dictionary(from: column.appNameLayer.frame),
"appNameAlignment": column.appNameLayer.alignmentMode.rawValue,
"appNameColor": colorDictionary(from: column.appNameLayer.foregroundColor),
@@ -4031,6 +4029,8 @@
"shadowOpacity": Double(group.containerLayer.shadowOpacity),
"shadowRadius": Double(group.containerLayer.shadowRadius),
"groupGap": Double(SpaceLaneMetrics.groupGap),
+ "groupHorizontalPadding": Double(SpaceLaneMetrics.groupHorizontalPadding),
+ "groupVerticalPadding": Double(SpaceLaneMetrics.groupVerticalPadding),
"segmentGap": Double(SpaceLaneMetrics.segmentGap)
] as [String: Any]
}
--
Gitblit v1.9.3