From 4e6af607e8fde2afab0982f4f909af3374716b29 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Thu, 2 Nov 2023 08:54:02 +0100 Subject: [PATCH] fix: Crash when clicking on the welcome screen --- lib/external/imgui/source/imgui.cpp | 5 +---- plugins/builtin/source/content/welcome_screen.cpp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/external/imgui/source/imgui.cpp b/lib/external/imgui/source/imgui.cpp index 0476a8468..f101eafa2 100644 --- a/lib/external/imgui/source/imgui.cpp +++ b/lib/external/imgui/source/imgui.cpp @@ -7383,10 +7383,7 @@ void ImGui::BringWindowToFocusFront(ImGuiWindow* window) IM_ASSERT(window == window->RootWindow); const int cur_order = window->FocusOrder; - // IMHEX PATCH BEGIN - // REASON: crashes ImHex when clicking on the background on the welcome screen - //IM_ASSERT(g.WindowsFocusOrder[cur_order] == window); - // IMHEX PATCH END + IM_ASSERT(g.WindowsFocusOrder[cur_order] == window); if (g.WindowsFocusOrder.back() == window) return; diff --git a/plugins/builtin/source/content/welcome_screen.cpp b/plugins/builtin/source/content/welcome_screen.cpp index 79cee51db..03c74fd5e 100644 --- a/plugins/builtin/source/content/welcome_screen.cpp +++ b/plugins/builtin/source/content/welcome_screen.cpp @@ -203,6 +203,7 @@ namespace hex::plugin::builtin { } // Draw recent entries + ImGui::Dummy({}); recent::draw(); if (ImHexApi::System::getInitArguments().contains("update-available")) { @@ -324,14 +325,16 @@ namespace hex::plugin::builtin { if (!ImHexApi::Provider::isValid()) { static std::array title; ImFormatString(title.data(), title.size(), "%s/DockSpace_%08X", ImGui::GetCurrentWindow()->Name, ImGui::GetID("ImHexMainDock")); - if (ImGui::Begin(title.data())) { + if (ImGui::Begin(title.data(), nullptr, ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoBringToFrontOnFocus)) { + ImGui::Dummy({}); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(10_scaled, 10_scaled)); ImGui::SetNextWindowScroll(ImVec2(0.0F, -1.0F)); - if (ImGui::BeginChild("Welcome Screen", ImVec2(0, 0), false, ImGuiWindowFlags_AlwaysUseWindowPadding)) { + ImGui::SetNextWindowSize(ImGui::GetContentRegionAvail() + scaled({ 0, 10 })); + if (ImGui::Begin("Welcome Screen", nullptr, ImGuiWindowFlags_AlwaysUseWindowPadding | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove)) { drawWelcomeScreenContent(); } - ImGui::EndChild(); + ImGui::End(); ImGui::PopStyleVar(); } ImGui::End(); @@ -348,7 +351,9 @@ namespace hex::plugin::builtin { ImFormatString(title, IM_ARRAYSIZE(title), "%s/DockSpace_%08X", ImGui::GetCurrentWindow()->Name, ImGui::GetID("ImHexMainDock")); if (ImGui::Begin(title)) { ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(10_scaled, 10_scaled)); - if (ImGui::BeginChild("NoViewsBackground", ImVec2(0, 0), false, ImGuiWindowFlags_AlwaysUseWindowPadding | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse)) { + if (ImGui::Begin("NoViewsBackground", nullptr, ImGuiWindowFlags_AlwaysUseWindowPadding | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse)) { + ImGui::Dummy({}); + auto imageSize = scaled(ImVec2(350, 350)); auto imagePos = (ImGui::GetContentRegionAvail() - imageSize) / 2; @@ -368,7 +373,7 @@ namespace hex::plugin::builtin { loadDefaultLayout(); } } - ImGui::EndChild(); + ImGui::End(); ImGui::PopStyleVar(); } ImGui::End();