fix: EventProviderOpened being called before the provider finished opening

This commit is contained in:
WerWolv
2025-07-12 21:09:45 +02:00
parent e7a2729d36
commit 58d0d09eae
3 changed files with 8 additions and 6 deletions

View File

@@ -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);
}
});

View File

@@ -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();
}
}

View File

@@ -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());