From c6b32e86c0f3e8a2a2acc642979273431275ac7b Mon Sep 17 00:00:00 2001 From: DanS Date: Sat, 4 Jul 2026 02:55:40 -0500 Subject: [PATCH] feat(ui): all overlay dialogs adopt the blur backdrop (Phase 2 core) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flip the positional BeginOverlayDialog overload's default to blurBackdrop=true, so every app dialog (~43 call sites) now renders its card on the live-blur backdrop instead of the opaque scrim — matching the Manage-Portfolio look. Cards stay auto-height (small dialogs stay small = "card for small") and render opaque via the existing sole-consumer fallback (a translucent glass card would thrash the single-slot blur cache against the radius-64 backdrop). Nested dialogs (address book edit) already pass a distinct idSuffix, so their blur windows/capture keys don't collide. A dialog that wants the old scrim can pass a spec with blurBackdrop=false. Big visual change — needs a GUI sweep; trivially reverted. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/ui/material/draw_helpers.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ui/material/draw_helpers.h b/src/ui/material/draw_helpers.h index f3222a9..f285f13 100644 --- a/src/ui/material/draw_helpers.h +++ b/src/ui/material/draw_helpers.h @@ -1298,7 +1298,10 @@ inline bool BeginOverlayDialog(const OverlayDialogSpec& spec) return childVisible; } -// Legacy positional overload — forwards to the spec impl with GlassCard defaults (byte-identical). +// Positional overload — the default look for the app's dialogs: a card (auto-height, so small +// dialogs stay small) on the live-blur backdrop. The card renders opaque via the sole-consumer +// fallback (glass would thrash the single-slot blur cache against the radius-64 backdrop). A dialog +// that wants the old opaque scrim (no blur) can pass a spec with blurBackdrop = false. inline bool BeginOverlayDialog(const char* title, bool* p_open, float cardWidth = 460.0f, float scrimOpacity = 0.92f, float cardBottomViewportRatio = 0.85f, const char* idSuffix = nullptr) @@ -1306,6 +1309,7 @@ inline bool BeginOverlayDialog(const char* title, bool* p_open, float cardWidth OverlayDialogSpec s; s.title = title; s.p_open = p_open; s.cardWidth = cardWidth; s.scrimOpacity = scrimOpacity; s.cardBottomViewportRatio = cardBottomViewportRatio; s.idSuffix = idSuffix; + s.blurBackdrop = true; return BeginOverlayDialog(s); }