feat(ui): float all modals card-less like Manage Portfolio
Drop the glass card + boxed title bar from every dialog so content floats directly on the blur backdrop under a plain h6 heading — the Manage-Portfolio look — unifying the whole modal system on one visual language (reverses the earlier card-for-small / float-for-large split). - Framework: the positional BeginOverlayDialog overload (used by all ~34 card dialogs) now defaults to floatingContent + plainHeading (draw_helpers.h). The 9 spec-form BlurFloat dialogs are unchanged; any dialog can still opt back to a card via an explicit OverlayStyle::GlassCard spec. Authored widths are kept (floating never resizes), so width-coupled layouts are unaffected. - Dedup: the framework h6 title made each dialog's own repeated title heading redundant. Removed the duplicate body heading from Import/Export key, Backup, daemon update, seed backup, seed migration, Defender-blocked (app.cpp), Wallets, and the send-confirm popup. - Close paths: dropping the title-bar close X is covered — every dialog has a footer button and/or the framework's outside-click dismiss (all pass p_open); send-confirm keeps Esc + Confirm/Cancel. Verified via the headless full UI sweep on dark + light: 17 modal surfaces float card-less with a single clean heading, nothing clipped, close controls present. Build clean, ctest passes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1462,10 +1462,10 @@ inline bool BeginOverlayDialog(const OverlayDialogSpec& spec)
|
||||
return childVisible;
|
||||
}
|
||||
|
||||
// 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.
|
||||
// Positional overload — the default look for the app's dialogs: content floats directly on the
|
||||
// live-blur backdrop (no glass card) under a plain h6 heading, matching the Manage-Portfolio
|
||||
// editor. Auto-height keeps short dialogs short. A dialog that needs the old contained card can
|
||||
// pass an explicit OverlayDialogSpec with style = OverlayStyle::GlassCard.
|
||||
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)
|
||||
@@ -1473,7 +1473,9 @@ 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;
|
||||
s.blurBackdrop = true;
|
||||
s.floatingContent = true; // no glass card — content floats on the blur
|
||||
s.plainHeading = true; // h6 heading instead of the boxed title bar (drops the ✕)
|
||||
return BeginOverlayDialog(s);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user