From 3bad5e1d9c5444671526dd2644a9a2870d216dab Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 31 Jan 2023 11:38:26 +0100 Subject: [PATCH] fix: ImHex still opening files when multiple builtin plugins are detected --- main/source/init/splash_window.cpp | 2 +- main/source/main.cpp | 3 +-- main/source/window/window.cpp | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/main/source/init/splash_window.cpp b/main/source/init/splash_window.cpp index f1830b16a..93bb20dda 100644 --- a/main/source/init/splash_window.cpp +++ b/main/source/init/splash_window.cpp @@ -89,7 +89,7 @@ namespace hex::init { } bool WindowSplash::loop() { - auto splash = romfs::get("splash.png"); + auto splash = romfs::get("splash.png"); ImGui::Texture splashTexture = ImGui::Texture(reinterpret_cast(splash.data()), splash.size()); if (!splashTexture.isValid()) { diff --git a/main/source/main.cpp b/main/source/main.cpp index ce1796bad..bff3e8d8f 100644 --- a/main/source/main.cpp +++ b/main/source/main.cpp @@ -55,8 +55,6 @@ int main(int argc, char **argv, char **envp) { // Main window { - Window window; - if (argc == 1) ; // No arguments provided else if (argc >= 2) { @@ -66,6 +64,7 @@ int main(int argc, char **argv, char **envp) { } } + Window window; window.loop(); } diff --git a/main/source/window/window.cpp b/main/source/window/window.cpp index c5f11ae75..c075bfbe2 100644 --- a/main/source/window/window.cpp +++ b/main/source/window/window.cpp @@ -98,14 +98,23 @@ namespace hex { Window::Window() { stacktrace::initialize(); + constexpr static auto openEmergencyPopup = [](const std::string &title){ + TaskManager::doLater([title] { + for (const auto &provider : ImHexApi::Provider::getProviders()) + ImHexApi::Provider::remove(provider, false); + + ImGui::OpenPopup(title.c_str()); + }); + }; + { for (const auto &[argument, value] : ImHexApi::System::getInitArguments()) { if (argument == "no-plugins") { - TaskManager::doLater([] { ImGui::OpenPopup("No Plugins"); }); + openEmergencyPopup("No Plugins"); } else if (argument == "no-builtin-plugin") { - TaskManager::doLater([] { ImGui::OpenPopup("No Builtin Plugin"); }); + openEmergencyPopup("No Builtin Plugin"); } else if (argument == "multiple-builtin-plugins") { - TaskManager::doLater([] { ImGui::OpenPopup("Multiple Builtin Plugins"); }); + openEmergencyPopup("Multiple Builtin Plugins"); } } }