fix(ui): readable error text on dark modal backdrops
The Material --error reds are muted by design, so error text drawn with the theme Error() color read low-contrast on the (now deeper) dark modal backdrops — the audit flagged the seed-migration warning/error lines on dark / dragonx. Add material::ReadableError(): the theme error lifted toward a legible light red on dark themes, unchanged on light themes (where it's already a dark red that reads on a light background). Apply it to the modal error-TEXT sites (lite first-run, seed backup, seed migration). This is targeted — it never touches the app-wide Error() used by toasts / badges / status dots — so nothing else shifts. Verified on the sweep: the "node too old" warning (dark) and "daemon did not respond" error (dragonx) now read clearly; light themes are unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,19 @@ inline bool IsLightTheme() {
|
||||
return (0.299f * r + 0.587f * g + 0.114f * b) > 0.5f;
|
||||
}
|
||||
|
||||
// Theme error color tuned for use as TEXT. The Material --error reds are muted, so on a dark modal
|
||||
// backdrop they read low-contrast; lift them toward a legible light red on dark themes. Light themes
|
||||
// keep the theme error (already a dark red readable on a light background).
|
||||
inline ImU32 ReadableError() {
|
||||
ImU32 e = Error();
|
||||
if (IsLightTheme()) return e;
|
||||
const float m = 0.35f; // blend toward white
|
||||
int r = (int)(((e >> IM_COL32_R_SHIFT) & 0xFF) * (1 - m) + 255 * m);
|
||||
int g = (int)(((e >> IM_COL32_G_SHIFT) & 0xFF) * (1 - m) + 255 * m);
|
||||
int b = (int)(((e >> IM_COL32_B_SHIFT) & 0xFF) * (1 - m) + 255 * m);
|
||||
return IM_COL32(r, g, b, (e >> IM_COL32_A_SHIFT) & 0xFF);
|
||||
}
|
||||
|
||||
// Animated "loading" ellipsis: "", ".", "..", "..." cycling on a ~3Hz phase.
|
||||
inline const char* LoadingDots() {
|
||||
int n = ((int)(ImGui::GetTime() * 3.0f)) % 4;
|
||||
|
||||
Reference in New Issue
Block a user