From 95f71bcb10aaf76e3b43ff504d9f9c0e2d0cbb3b Mon Sep 17 00:00:00 2001 From: WerWolv Date: Wed, 26 Jun 2024 19:11:31 +0200 Subject: [PATCH] fix: Sub windows being used incorrectly --- .../source/ui/imgui_imhex_extensions.cpp | 1 - .../source/content/out_of_box_experience.cpp | 3 +-- plugins/builtin/source/content/recent.cpp | 2 +- .../source/content/settings_entries.cpp | 2 +- .../source/content/views/view_about.cpp | 15 +++++------ .../content/views/view_highlight_rules.cpp | 2 +- .../source/content/views/view_information.cpp | 2 +- .../source/content/views/view_settings.cpp | 2 +- .../source/content/views/view_tutorials.cpp | 3 +-- .../builtin/source/content/welcome_screen.cpp | 26 +++++++++---------- .../content/data_information_sections.cpp | 4 +-- 11 files changed, 27 insertions(+), 35 deletions(-) diff --git a/lib/libimhex/source/ui/imgui_imhex_extensions.cpp b/lib/libimhex/source/ui/imgui_imhex_extensions.cpp index 988135fd1..3d4598561 100644 --- a/lib/libimhex/source/ui/imgui_imhex_extensions.cpp +++ b/lib/libimhex/source/ui/imgui_imhex_extensions.cpp @@ -1189,7 +1189,6 @@ namespace ImGuiExt { ImGui::SetCursorPosY(ImGui::GetCursorPosY() - (ImGui::GetStyle().FramePadding.y * 2)); ImGui::TextDisabled("..."); result = false; - ImGui::EndChild(); } } ImGui::PopStyleVar(); diff --git a/plugins/builtin/source/content/out_of_box_experience.cpp b/plugins/builtin/source/content/out_of_box_experience.cpp index 13744ae28..f57e43ba2 100644 --- a/plugins/builtin/source/content/out_of_box_experience.cpp +++ b/plugins/builtin/source/content/out_of_box_experience.cpp @@ -355,9 +355,8 @@ namespace hex::plugin::builtin { auto yEnd = ImGui::GetCursorPosY(); subWindowSize = ImGui::GetWindowSize(); subWindowSize.y = (yEnd - yBegin) + 35_scaled; - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); break; } diff --git a/plugins/builtin/source/content/recent.cpp b/plugins/builtin/source/content/recent.cpp index 0475c8eec..b5dd996cb 100644 --- a/plugins/builtin/source/content/recent.cpp +++ b/plugins/builtin/source/content/recent.cpp @@ -328,8 +328,8 @@ namespace hex::plugin::builtin::recent { } } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); } void addMenuItems() { diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index 2d723fdbf..5d4758979 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -553,8 +553,8 @@ namespace hex::plugin::builtin { ImGui::EndTable(); } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); // Handle dropping menu items onto the toolbar box if (ImGui::BeginDragDropTarget()) { diff --git a/plugins/builtin/source/content/views/view_about.cpp b/plugins/builtin/source/content/views/view_about.cpp index 3393e81a2..f3e1f9b37 100644 --- a/plugins/builtin/source/content/views/view_about.cpp +++ b/plugins/builtin/source/content/views/view_about.cpp @@ -130,9 +130,8 @@ namespace hex::plugin::builtin { if (ImGuiExt::BeginSubWindow("Build Information", nullptr, ImVec2(450_scaled, 0), ImGuiChildFlags_AutoResizeX | ImGuiChildFlags_AutoResizeY)) { this->drawBuildInformation(); - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); ImGui::EndTable(); } @@ -266,9 +265,8 @@ namespace hex::plugin::builtin { ImGui::EndTable(); } - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); } void ViewAbout::drawContributorPage() { @@ -371,8 +369,8 @@ namespace hex::plugin::builtin { ImGui::PopStyleVar(2); } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); ImGui::NewLine(); }; @@ -409,8 +407,8 @@ namespace hex::plugin::builtin { ImGui::EndTable(); } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); } void ViewAbout::drawPluginRow(const hex::Plugin& plugin) { @@ -511,8 +509,8 @@ namespace hex::plugin::builtin { ImGui::EndTable(); } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); ImGui::PopStyleVar(); } @@ -730,9 +728,8 @@ namespace hex::plugin::builtin { if (result) { this->drawCommitsTable(commits); - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); } void ViewAbout::drawCommitsTable(const auto& commits) { diff --git a/plugins/builtin/source/content/views/view_highlight_rules.cpp b/plugins/builtin/source/content/views/view_highlight_rules.cpp index 836e4d6c7..745827614 100644 --- a/plugins/builtin/source/content/views/view_highlight_rules.cpp +++ b/plugins/builtin/source/content/views/view_highlight_rules.cpp @@ -297,8 +297,8 @@ namespace hex::plugin::builtin { ImGuiExt::TextFormattedCentered("hex.builtin.view.highlight_rules.no_rule"_lang); } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); } diff --git a/plugins/builtin/source/content/views/view_information.cpp b/plugins/builtin/source/content/views/view_information.cpp index 8a5a8b3d0..73e60329f 100644 --- a/plugins/builtin/source/content/views/view_information.cpp +++ b/plugins/builtin/source/content/views/view_information.cpp @@ -147,8 +147,8 @@ namespace hex::plugin::builtin { if (ImGuiExt::DimmedButton("hex.builtin.view.information.analyze"_lang, ImVec2(ImGui::GetContentRegionAvail().x - 50_scaled, 0))) this->analyze(); - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); ImGui::EndDisabled(); if (analysis.analyzedProvider != nullptr) { diff --git a/plugins/builtin/source/content/views/view_settings.cpp b/plugins/builtin/source/content/views/view_settings.cpp index 5ad9972af..a319964c7 100644 --- a/plugins/builtin/source/content/views/view_settings.cpp +++ b/plugins/builtin/source/content/views/view_settings.cpp @@ -131,8 +131,8 @@ namespace hex::plugin::builtin { } } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); ImGui::NewLine(); } } diff --git a/plugins/builtin/source/content/views/view_tutorials.cpp b/plugins/builtin/source/content/views/view_tutorials.cpp index f21a04a02..c48af58ab 100644 --- a/plugins/builtin/source/content/views/view_tutorials.cpp +++ b/plugins/builtin/source/content/views/view_tutorials.cpp @@ -57,9 +57,8 @@ namespace hex::plugin::builtin { if (m_selectedTutorial != nullptr) { if (ImGuiExt::BeginSubWindow("hex.builtin.view.tutorials.description"_lang, nullptr, ImGui::GetContentRegionAvail() - ImVec2(0, ImGui::GetTextLineHeightWithSpacing() + ImGui::GetStyle().ItemSpacing.y * 2))) { ImGuiExt::TextFormattedWrapped(Lang(m_selectedTutorial->getUnlocalizedDescription())); - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); ImGui::BeginDisabled(currTutorial != tutorials.end()); if (ImGuiExt::DimmedButton("hex.builtin.view.tutorials.start"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0))) { diff --git a/plugins/builtin/source/content/welcome_screen.cpp b/plugins/builtin/source/content/welcome_screen.cpp index d0d145e1d..2e1f85397 100644 --- a/plugins/builtin/source/content/welcome_screen.cpp +++ b/plugins/builtin/source/content/welcome_screen.cpp @@ -226,9 +226,9 @@ namespace hex::plugin::builtin { RequestOpenWindow::post("Open Project"); if (ImGuiExt::IconHyperlink(ICON_VS_TELESCOPE, "hex.builtin.welcome.start.open_other"_lang)) otherProvidersVisible = !otherProvidersVisible; - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); + auto endPos = ImGui::GetCursorPos(); if (otherProvidersVisible) { @@ -245,8 +245,8 @@ namespace hex::plugin::builtin { } } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); } } @@ -262,9 +262,8 @@ namespace hex::plugin::builtin { if (ImGuiExt::IconHyperlink(ICON_VS_GITHUB, "hex.builtin.welcome.help.repo"_lang)) hex::openWebpage("hex.builtin.welcome.help.repo.link"_lang); if (ImGuiExt::IconHyperlink(ICON_VS_ORGANIZATION, "hex.builtin.welcome.help.gethelp"_lang)) hex::openWebpage("hex.builtin.welcome.help.gethelp.link"_lang); if (ImGuiExt::IconHyperlink(ICON_VS_COMMENT_DISCUSSION, "hex.builtin.welcome.help.discord"_lang)) hex::openWebpage("hex.builtin.welcome.help.discord.link"_lang); - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); if (ImHexApi::System::getInitArguments().contains("update-available")) { ImGui::TableNextRow(); @@ -286,9 +285,9 @@ namespace hex::plugin::builtin { if (ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.customize"_lang, nullptr, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX)) { if (ImGuiExt::DescriptionButton("hex.builtin.welcome.customize.settings.title"_lang, "hex.builtin.welcome.customize.settings.desc"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0))) RequestOpenWindow::post("Settings"); - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); + ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5); ImGui::TableNextColumn(); @@ -315,9 +314,8 @@ namespace hex::plugin::builtin { RequestOpenWindow::post("Achievements"); } } - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); auto extraWelcomeScreenEntries = ContentRegistry::Interface::impl::getWelcomeScreenEntries(); if (!extraWelcomeScreenEntries.empty()) { @@ -327,9 +325,8 @@ namespace hex::plugin::builtin { if (ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.various"_lang, nullptr, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0))) { for (const auto &callback : extraWelcomeScreenEntries) callback(); - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); } if (s_infoBannerTexture.isValid()) { @@ -346,9 +343,9 @@ namespace hex::plugin::builtin { if (ImGui::IsItemClicked()) { hex::openWebpage(ImHexApiURL + hex::format("/info/{}/link", hex::toLower(ImHexApi::System::getOSName()))); } - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); + ImGui::PopStyleVar(); ImGui::PopStyleColor(); @@ -411,8 +408,9 @@ namespace hex::plugin::builtin { WorkspaceManager::switchWorkspace(s_simplifiedWelcomeScreen ? "Minimal" : "Default"); } - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); + ImGui::PopStyleColor(); hovered = ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenOverlappedByItem | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem); diff --git a/plugins/yara_rules/source/content/data_information_sections.cpp b/plugins/yara_rules/source/content/data_information_sections.cpp index 522b73cf8..389ba7b36 100644 --- a/plugins/yara_rules/source/content/data_information_sections.cpp +++ b/plugins/yara_rules/source/content/data_information_sections.cpp @@ -80,9 +80,9 @@ namespace hex::plugin::yara { const auto &ruleName = match.metadata.contains("name") ? match.metadata.at("name") : match.identifier; ImGui::TextUnformatted(ruleName.c_str()); } - - ImGuiExt::EndSubWindow(); } + ImGuiExt::EndSubWindow(); + } ImGui::EndTable();