From 58d0d09eae5780ae19ea9da06c0a9eafa5e88010 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sat, 12 Jul 2025 21:09:45 +0200 Subject: [PATCH] fix: `EventProviderOpened` being called before the provider finished opening --- plugins/builtin/source/content/events.cpp | 8 ++++---- plugins/builtin/source/content/recent.cpp | 4 ++-- .../builtin/source/content/views/view_data_processor.cpp | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/plugins/builtin/source/content/events.cpp b/plugins/builtin/source/content/events.cpp index 770c0020e..3519ef01d 100644 --- a/plugins/builtin/source/content/events.cpp +++ b/plugins/builtin/source/content/events.cpp @@ -208,20 +208,20 @@ namespace hex::plugin::builtin { if (!provider->open()) { ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); }); + } else { + TaskManager::doLater([provider]{ EventProviderOpened::post(provider); }); } }); - - EventProviderOpened::post(provider); } else if (!provider->hasLoadInterface()) { TaskManager::createBlockingTask("hex.builtin.provider.opening", TaskManager::NoProgress, [provider]() { if (!provider->open() || !provider->isAvailable()) { ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); }); + } else { + TaskManager::doLater([provider]{ EventProviderOpened::post(provider); }); } }); - - EventProviderOpened::post(provider); } }); diff --git a/plugins/builtin/source/content/recent.cpp b/plugins/builtin/source/content/recent.cpp index 7e4d7eb26..51f775d37 100644 --- a/plugins/builtin/source/content/recent.cpp +++ b/plugins/builtin/source/content/recent.cpp @@ -247,11 +247,11 @@ namespace hex::plugin::builtin::recent { if (!provider->open() || !provider->isAvailable()) { ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); }); + } else { + TaskManager::doLater([provider]{ EventProviderOpened::post(provider); }); } }); - EventProviderOpened::post(provider); - updateRecentEntries(); } } diff --git a/plugins/builtin/source/content/views/view_data_processor.cpp b/plugins/builtin/source/content/views/view_data_processor.cpp index 4df78542c..3fd528ad5 100644 --- a/plugins/builtin/source/content/views/view_data_processor.cpp +++ b/plugins/builtin/source/content/views/view_data_processor.cpp @@ -888,6 +888,8 @@ namespace hex::plugin::builtin { } void ViewDataProcessor::drawContent() { + if (m_workspaceStack->empty()) return; + auto &workspace = *m_workspaceStack->back(); ImGui::BeginDisabled(m_evaluationTask.isRunning());