Standardize cursor chrome to fill-only across qs.Ui

CursorSurface defines the canonical cursor chrome: a tinted fill, no
border. Three components had inconsistent treatments that the recent
standardization pass left half-finished:

- PillButton kept a 1px foreground border on hot (cursor or hover)
  via a cursorBordered: true default.
- CursorPill specifically had to override cursorBordered: false to
  match the rest of the kit.
- ChoiceButton thickened its border to 2px on hasCursor, which mixed
  the cursor visual with the Tab-focus visual.

Drop the cursorBordered escape hatch from PillButton (no caller other
than CursorPill ever used it), drop CursorPill's now-redundant
override, and remove hasCursor from ChoiceButton's border.width
thickening. Update Toggle's class comment (it still claimed cursor
mirrored Tab focus, which f3ba5055 broke without updating the doc).

Now: hot/hasCursor = fill only, activeFocus = accent border ring,
selected/active = stronger fill or accent border per component
semantic. One canonical pattern across the kit.
This commit is contained in:
Ryan Hughes committed 2026-05-18 11:52:23 -04:00
1 parent 648bc54db1
commit 42dee4d399
4 files changed
+15 -14

No files matched your search

+5 -4
View File
@@ -38,10 +38,12 @@ Rectangle {
// Persistent 1px foreground border at idle. Use for "primary" form buttons
// (Save, Apply, + Add widget) so they read as buttons before the cursor
// hits them. The hot/cursor state paints its own 1px border, so changing
// this doesn't affect panel-pill visuals.
// hits them.
//
// The hot/cursor state is a fill only, matching CursorSurface's canonical
// chrome and the other panel primitives (Toggle, PanelActionButton). The
// accent border ring is reserved for Tab focus on `focusable` buttons.
property bool bordered: false
property bool cursorBordered: true
activeFocusOnTab: focusable
Keys.onReturnPressed: if (focusable) root.clicked()
@@ -95,7 +97,6 @@ Rectangle {
: hot ? hoverBackground
: (active ? activeBackground : background)
border.width: _showFocusRing ? Style.focusBorderWidth
: hot ? (cursorBordered ? 1 : 0)
: (bordered ? 1 : 0)
border.color: _showFocusRing ? Style.focusBorderColor : foreground