fix(vfo): SPLIT badge nearly invisible in inactive state (#3402)#3412
Conversation
) The inactive ("ghosted") SPLIT badge used rgba(255,255,255,40) — 16% white opacity — which is indistinguishable from a disabled/unavailable control against the slice flag background on all themes. The same low alpha was applied at both construction time and in updateSplitBadge()'s "split not active" branch. Raise the inactive alpha to 120 (47%) and the hover alpha to 180 (71%). This keeps the badge clearly dimmer than the active SPLIT/SWAP states (which use explicit colors and a non-transparent background), while making it legible as an available interactive control. Fixes aethersdr#3402
There was a problem hiding this comment.
Targeted, in-scope visibility fix — thanks @M7HNF-Ian. Diff looks good.
Verified:
- Both occurrences of the inactive stylesheet (
VfoWidget.cpp:489construction andVfoWidget.cpp:3071updateSplitBadge()re-apply) are bumped together, so the two branches stay in sync — that was the right call given they're hand-duplicated. - The active SPLIT (
#cc0000) and SWAP (#80c0ff) branches above are unchanged, so the dim → distinct → bright progression across inactive/active/TX is preserved. - 120/255 ≈ 47% and 180/255 ≈ 71% on a transparent background read clearly as an available control without competing with the active states.
One non-blocking observation (out of scope here, just flagging): the two else branches above use ThemeManager::applyStyleSheet() with theme tokens, but the inactive branch hardcodes setStyleSheet(...) with literal rgba(255,255,255,...). That's pre-existing — the white is theme-neutral enough on the dark slice-flag background today — but if a light theme ever lands, this badge will need a token-driven foreground. Not something this PR needs to take on.
No bug, null, or resource concerns; scope matches the title/issue.
🤖 aethersdr-agent · cost: $9.7944 · model: claude-opus-4-7
NF0T
left a comment
There was a problem hiding this comment.
Targeted visibility fix, @M7HNF-Ian. Both call sites updated in sync (construction and updateSplitBadge() re-apply), active SPLIT and SWAP branches unchanged — the ghosted → available → active progression is intact. The new 47% / 71% values read clearly as an interactive control without competing with the fully-opaque active states.
The pre-existing setStyleSheet() / ThemeManager asymmetry between the inactive and active branches is the right thing to leave out of scope here.
All 5 CI checks green.
73,
Ryan NF0T
Problem
The inactive SPLIT badge uses
rgba(255,255,255,40)— 16% white opacity — which is indistinguishable from a disabled/unavailable control against the slice flag background. The same low alpha is applied at both construction time (VfoWidget.cpp:489) and inupdateSplitBadge()'s "split not active" branch (VfoWidget.cpp:3071).Fix
Raise inactive alpha from 40 → 120 (47%) and hover alpha from 80 → 180 (71%). The badge is still clearly dimmer than the active SPLIT/SWAP states, which use explicit colours and a non-transparent background — but it's now legible as an available interactive control.
Testing
Verified visually on macOS dev build — the SPLIT badge is now readable in the slice flag header when split is not active.
Fixes #3402