Skip to content

Commit 3f9ce56

Browse files
committed
fix: Post-pone file opening till everything has been initialized
1 parent 347fc3e commit 3f9ce56

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

plugins/builtin/source/content/events.cpp

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,30 +40,32 @@
4040
namespace hex::plugin::builtin {
4141

4242
static void openFile(const std::fs::path &path) {
43-
if (path.extension() == ".hexproj") {
44-
if (!ProjectFile::load(path)) {
45-
ui::ToastError::open(fmt::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
46-
}
47-
48-
return;
49-
}
43+
TaskManager::doLater([path] {
44+
if (path.extension() == ".hexproj") {
45+
if (!ProjectFile::load(path)) {
46+
ui::ToastError::open(fmt::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
47+
}
5048

51-
auto provider = ImHexApi::Provider::createProvider("hex.builtin.provider.file", true);
52-
if (auto *fileProvider = dynamic_cast<FileProvider*>(provider); fileProvider != nullptr) {
53-
fileProvider->setPath(path);
54-
if (!provider->open() || !provider->isAvailable()) {
55-
ui::ToastError::open(fmt::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
56-
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
5749
return;
5850
}
5951

60-
EventProviderOpened::post(fileProvider);
61-
AchievementManager::unlockAchievement("hex.builtin.achievement.starting_out", "hex.builtin.achievement.starting_out.open_file.name");
62-
ImHexApi::Provider::setCurrentProvider(provider);
52+
auto provider = ImHexApi::Provider::createProvider("hex.builtin.provider.file", true);
53+
if (auto *fileProvider = dynamic_cast<FileProvider*>(provider); fileProvider != nullptr) {
54+
fileProvider->setPath(path);
55+
if (!provider->open() || !provider->isAvailable()) {
56+
ui::ToastError::open(fmt::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
57+
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
58+
return;
59+
}
60+
61+
EventProviderOpened::post(fileProvider);
62+
AchievementManager::unlockAchievement("hex.builtin.achievement.starting_out", "hex.builtin.achievement.starting_out.open_file.name");
63+
ImHexApi::Provider::setCurrentProvider(provider);
6364

64-
glfwRequestWindowAttention(ImHexApi::System::getMainWindowHandle());
65-
glfwFocusWindow(ImHexApi::System::getMainWindowHandle());
66-
}
65+
glfwRequestWindowAttention(ImHexApi::System::getMainWindowHandle());
66+
glfwFocusWindow(ImHexApi::System::getMainWindowHandle());
67+
}
68+
});
6769
}
6870

6971
void registerEventHandlers() {

0 commit comments

Comments
 (0)