A chamfer with no neighbour behind it now carries the corner it removed, put back OUTSIDE the panel as a detached accent triangle. capGap is the perpendicular distance from the cut, hence the per-axis shift of capGap over root 2: the cap moves along the cut's normal, not along an axis. The trace joining two caps belongs to the RAIL, not the panel — the run it draws is the gap BETWEEN two panels, which no panel can see. HyprChromeBar filters the row down to panels (a slack Item has no `rightChamfer`, so spacers drop out, and dropping them is exactly what makes a trace span them), then joins each right cap to the next left cap: straight, one 45° step at the midpoint of the gap, straight. It meets the middle of each cap's outward face rather than its tip. TestPanel is a staging slot between two spacers. It counts seconds since load, which is the cheapest proof the panel is live, and standing alone it exercises a cap and a trace at both ends — something a rail of butted panels never does. Restructures the module in the same commit, since the moves and the edits above land in the same files: folders are PascalCase, the bar and its widgets moved under Widgets/Bar, and DebugWindow takes the HyprChrome Theme instead of the legacy one. The two singletons are identical today, so that is not a visual fix — it is a palette edit reaching the debug stage in future. Rename detection needs -M40% to follow HyprChromeBar, which grew past the default similarity threshold. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U19X5LGTxtq4pb4jdNVivv
40 lines
1.6 KiB
QML
40 lines
1.6 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import qs.HyprChrome.Theme
|
|
import qs.HyprChrome.Widgets.Bar.Panels
|
|
|
|
// Staging widget for the debug window: a BarPanel carrying filler copy in both
|
|
// of the panel's densities — the full block when expanded, one elided line when
|
|
// collapsed. Both read the same `text`, so the two modes cannot disagree.
|
|
//
|
|
// Give it a width; the height follows whichever body is showing.
|
|
BarPanel {
|
|
id: lorem
|
|
|
|
property string text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since 1966, when designers at Letraset and James Mosley, the librarian at St Bride Printing Library in London, took a 1914 Cicero translation and scrambled it to make dummy text for Letraset's Body Type sheets. It has survived not only many decades, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised thanks to these sheets and more recently with desktop publishing software like Aldus PageMaker and Microsoft Word including versions of Lorem Ipsum."
|
|
|
|
title: "LOREM IPSUM"
|
|
|
|
// Collapsed: one line, cut off where the panel ends.
|
|
summary: Text {
|
|
width: parent.width
|
|
text: lorem.text
|
|
color: Theme.muted
|
|
font.family: Theme.displayFont
|
|
font.pixelSize: 12
|
|
maximumLineCount: 1
|
|
elide: Text.ElideRight
|
|
}
|
|
|
|
// Expanded: the whole thing, wrapped.
|
|
Text {
|
|
width: parent.width
|
|
text: lorem.text
|
|
color: Theme.text
|
|
font.family: Theme.displayFont
|
|
font.pixelSize: 12
|
|
wrapMode: Text.WordWrap
|
|
}
|
|
}
|