From ed3712e1b9273054cc05dfcc1c813ca00e2959c3 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 2 Feb 2025 12:00:59 +0100 Subject: [PATCH] fix: Shortcuts not working until a modal is opened --- plugins/builtin/source/content/ui_items.cpp | 41 +++++++++++---------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/plugins/builtin/source/content/ui_items.cpp b/plugins/builtin/source/content/ui_items.cpp index e102adcbe..9f6efe7cb 100644 --- a/plugins/builtin/source/content/ui_items.cpp +++ b/plugins/builtin/source/content/ui_items.cpp @@ -52,29 +52,32 @@ namespace hex::plugin::builtin { } } - if (TaskManager::getRunningBlockingTaskCount() > 0) { - auto tasks = TaskManager::getRunningTasks(); - ImGui::SetNextWindowSize(scaled({ 300, 200 }), ImGuiCond_Always); - ImGui::SetNextWindowPos(ImHexApi::System::getMainWindowPosition() + ImHexApi::System::getMainWindowSize() / 2, ImGuiCond_Always, ImVec2(0.5F, 0.5F)); - if (ImGui::BeginPopupModal("hex.builtin.popup.foreground_task.title"_lang, nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove)) { - for (const auto &task : tasks) { - if (task->isBlocking()) { - ImGui::NewLine(); - ImGui::TextUnformatted(Lang(task->getUnlocalizedName())); - ImGui::NewLine(); + ImGui::SetNextWindowSize(scaled({ 300, 200 }), ImGuiCond_Always); + ImGui::SetNextWindowPos(ImHexApi::System::getMainWindowPosition() + ImHexApi::System::getMainWindowSize() / 2, ImGuiCond_Always, ImVec2(0.5F, 0.5F)); + if (ImGui::BeginPopupModal("hex.builtin.popup.foreground_task.title"_lang, nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove)) { + for (const auto &task : TaskManager::getRunningTasks()) { + if (task->isBlocking()) { + ImGui::NewLine(); + ImGui::TextUnformatted(Lang(task->getUnlocalizedName())); + ImGui::NewLine(); - ImGui::SetCursorPosX((ImGui::GetWindowWidth() - ImGui::CalcTextSize("[-]").x) / 2); - ImGuiExt::TextSpinner(""); + ImGui::SetCursorPosX((ImGui::GetWindowWidth() - ImGui::CalcTextSize("[-]").x) / 2); + ImGuiExt::TextSpinner(""); - ImGui::NewLine(); - const auto progress = task->getMaxValue() == 0 ? -1 : float(task->getValue()) / float(task->getMaxValue()); - ImGuiExt::ProgressBar(progress, ImVec2(0, 10_scaled)); - break; - } + ImGui::NewLine(); + const auto progress = task->getMaxValue() == 0 ? -1 : float(task->getValue()) / float(task->getMaxValue()); + ImGuiExt::ProgressBar(progress, ImVec2(0, 10_scaled)); + break; } + } - ImGui::EndPopup(); - } else { + if (TaskManager::getRunningBlockingTaskCount() == 0) { + ImGui::CloseCurrentPopup(); + } + + ImGui::EndPopup(); + } else { + if (TaskManager::getRunningBlockingTaskCount() > 0) { ImGui::OpenPopup("hex.builtin.popup.foreground_task.title"_lang); } }