From 10459759463ccf05ce5f41561cec31a5a8457b37 Mon Sep 17 00:00:00 2001 From: Saman Shirdel Date: Wed, 29 Jul 2026 12:26:01 -0700 Subject: [PATCH] Stop section headers rendering clipped at the top of a list JetBrainsMono Nerd Font draws 10% of the em above the ascent Text reserves for it (yMax 1120 against ascent 1020), and a patched or user-chosen family can be worse. In normal flow that sliver costs nothing; at the top of a clipping list it is sliced off and the header renders beheaded. Reserving it in PanelSectionHeader covers every panel at once, rather than each list working around it in its own geometry. Co-Authored-By: Claude Opus 5 (1M context) --- shell/Ui/PanelSectionHeader.qml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/shell/Ui/PanelSectionHeader.qml b/shell/Ui/PanelSectionHeader.qml index 249842b7..5559248e 100644 --- a/shell/Ui/PanelSectionHeader.qml +++ b/shell/Ui/PanelSectionHeader.qml @@ -15,4 +15,12 @@ Text { font.family: fontFamily font.pixelSize: fontSize font.bold: true + + // Glyphs can paint above the box Text reserves for them: JetBrainsMono Nerd + // Font's outlines run 10% of the em past its own ascent, and a patched or + // user-chosen family can be worse. That sliver is invisible in normal flow, + // but a header sitting at the top of a clipping list — bluetooth's device + // list, network's station list — loses it to the clip and renders beheaded. + // Reserve the overshoot here so every panel is covered at once. + topPadding: Math.ceil(fontSize * 0.15) }