diff --git a/src/app_sweep.cpp b/src/app_sweep.cpp index 052f560..f2cd117 100644 --- a/src/app_sweep.cpp +++ b/src/app_sweep.cpp @@ -399,6 +399,11 @@ void App::buildSweepCatalog() add("market-rows-featured", ui::NavPage::Market, [](App& a) { if (a.settings_) a.settings_->setPortfolioStyle(2); }, [](App& a) { if (a.settings_) a.settings_->setPortfolioStyle(0); }); + + // Console RPC command-reference popup (fixed-height dialog with a fill-height command list). + add("modal-console-commands", ui::NavPage::Console, + [](App& a) { a.console_tab_.sweepSetCommandsPopup(true); }, + [](App& a) { a.console_tab_.sweepSetCommandsPopup(false); }); } // ── State machine ─────────────────────────────────────────────────────────────────────────── diff --git a/src/ui/windows/console_tab.cpp b/src/ui/windows/console_tab.cpp index 3f0a0be..c6f41ec 100644 --- a/src/ui/windows/console_tab.cpp +++ b/src/ui/windows/console_tab.cpp @@ -1391,13 +1391,15 @@ void ConsoleTab::renderCommandsPopup() ov.title = TR("console_rpc_reference"); ov.p_open = &show_commands_popup_; ov.style = material::OverlayStyle::BlurFloat; // floating content on the blur, plain heading ov.cardWidth = popW; ov.cardBottomViewportRatio = 0.94f; // keep authored width + // FIXED height (fills most of the viewport) instead of auto-height: the command list's + // fill-height child reads GetContentRegionAvail() inside the dialog child, which is only stable + // when the child is fixed-height. Auto-height made it self-referential and it slid content + // off-screen after a monitor move (same class of bug as the Wallets modal). + ov.cardHeight = ImGui::GetMainViewport()->Size.y * 0.84f / Layout::dpiScale(); if (!material::BeginOverlayDialog(ov)) { return; } - Type().text(TypeStyle::H6, TR("console_rpc_reference")); - ImGui::Dummy(ImVec2(0, Layout::spacingSm())); - // Search filter static char cmdFilter[128] = {0}; ImGui::SetNextItemWidth(-1); diff --git a/src/ui/windows/console_tab.h b/src/ui/windows/console_tab.h index b13f9fc..d84cde7 100644 --- a/src/ui/windows/console_tab.h +++ b/src/ui/windows/console_tab.h @@ -47,7 +47,11 @@ public: * Must be called outside any child window so the modal blocks all input. */ void renderCommandsPopupModal(); - + + // Debug/UI-sweep hook: force the RPC command-reference popup open/closed so the full UI sweep + // can capture it (the popup is otherwise opened only by a toolbar button). + void sweepSetCommandsPopup(bool open) { show_commands_popup_ = open; } + /** * @brief Add a line to the console output */ diff --git a/src/ui/windows/wallets_dialog.h b/src/ui/windows/wallets_dialog.h index 80bbb11..6456686 100644 --- a/src/ui/windows/wallets_dialog.h +++ b/src/ui/windows/wallets_dialog.h @@ -69,8 +69,13 @@ public: const std::string active = app->settings() ? app->settings()->getActiveWalletFile() : "wallet.dat"; - // Leave room below the table for the add-folder row + footer buttons. - float tableH = ImGui::GetContentRegionAvail().y - 130.0f * dp; + // Reserve room below the table for the create-wallet + add-folder rows (each a label + + // an input row), the separator, and the footer buttons — computed from real widget + // metrics so nothing clips at any DPI (a fixed px reserve was too small at 150%). + const float rowH = ImGui::GetFrameHeightWithSpacing(); + const float lblH = Type().caption()->LegacySize + ImGui::GetStyle().ItemSpacing.y; + const float belowH = 3.0f * Layout::spacingSm() + 2.0f * lblH + 3.0f * rowH + Layout::spacingMd(); + float tableH = ImGui::GetContentRegionAvail().y - belowH; if (tableH < 120.0f * dp) tableH = 120.0f * dp; const ImGuiTableFlags tflags = ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg |