From 86f0b4bd20cdec86dfb5bdb7978d1f6ff4af111a Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Fri, 14 Aug 2026 22:41:54 +0800
Subject: [PATCH] [verified] feat: export performance diagnostics

---
 C1.source/Sources/Aligner/QuickSwitchRootView.swift |   26 +++++++++++++++++---------
 1 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/C1.source/Sources/Aligner/QuickSwitchRootView.swift b/C1.source/Sources/Aligner/QuickSwitchRootView.swift
index 7bb50aa..dd36a57 100644
--- a/C1.source/Sources/Aligner/QuickSwitchRootView.swift
+++ b/C1.source/Sources/Aligner/QuickSwitchRootView.swift
@@ -413,6 +413,9 @@
         static let normalGap: CGFloat = 16
         static let minGap: CGFloat = 8
         static let maxRows = 2
+        static let rowHeight: CGFloat = selectedIconSize + 18
+        static let rowGap: CGFloat = 8
+        static let verticalPadding: CGFloat = 6
         static let indexFontSize: CGFloat = 16
         static let compressedIndexFontSize: CGFloat = 14
         static let indexWidth: CGFloat = 18
@@ -4505,12 +4508,17 @@
     }
 
     private func appShelfHeight(forRows rows: Int) -> CGFloat {
-        switch rows {
-        case 0, 1:
-            return 92
-        default:
-            return 148
-        }
+        appShelfRowsHeight(forRows: max(1, rows)) + AppShelfMetrics.verticalPadding
+    }
+
+    private func appShelfRowsHeight(forRows rows: Int) -> CGFloat {
+        let rowCount = max(1, rows)
+        return CGFloat(rowCount) * AppShelfMetrics.rowHeight
+            + CGFloat(rowCount - 1) * appShelfRowGap(forRows: rowCount)
+    }
+
+    private func appShelfRowGap(forRows rows: Int) -> CGFloat {
+        rows > 1 ? AppShelfMetrics.rowGap : 0
     }
 
     private var appShelfSlotPadding: CGFloat {
@@ -5052,8 +5060,8 @@
         let iconSize = appShelfLayout.iconSize
         let gap = appShelfGap(forIconSize: iconSize)
         let itemWidth = appShelfSlotWidth(forIconSize: iconSize)
-        let rowHeight: CGFloat = AppShelfMetrics.selectedIconSize + 18
-        let rowGap: CGFloat = appShelfLayout.rows > 1 ? 8 : 0
+        let rowHeight = AppShelfMetrics.rowHeight
+        let rowGap = appShelfRowGap(forRows: rows.count)
         let innerWidth = max(1, shelfLayer.bounds.width - 24)
         let maxRowWidth = rows
             .map { widthForAppShelfItems(count: $0.count, itemWidth: itemWidth, gap: gap) }
@@ -5067,7 +5075,7 @@
             height: shelfLayer.bounds.height
         )
 
-        let totalRowsHeight = CGFloat(rows.count) * rowHeight + CGFloat(max(0, rows.count - 1)) * rowGap
+        let totalRowsHeight = appShelfRowsHeight(forRows: rows.count)
         var y = shelfLayer.bounds.midY + totalRowsHeight / 2 - rowHeight
 
         for row in rows {

--
Gitblit v1.9.3