impr: Make long running tasks not freeze ImHex, fix saving non-continuous providers

Fixes #1454
This commit is contained in:
WerWolv
2023-12-05 14:32:28 +01:00
parent 13145bba03
commit 760b8c7a88
6 changed files with 59 additions and 14 deletions

View File

@@ -16,6 +16,7 @@
#include <content/popups/popup_file_chooser.hpp>
#include <imgui_internal.h>
#include <content/popups/popup_blocking_task.hpp>
using namespace std::literals::string_literals;
@@ -692,7 +693,10 @@ namespace hex::plugin::builtin {
static void saveAs() {
fs::openFileBrowser(fs::DialogMode::Save, {}, [](const auto &path) {
ImHexApi::Provider::get()->saveAs(path);
auto provider = ImHexApi::Provider::get();
PopupBlockingTask::open(TaskManager::createTask("Saving...", TaskManager::NoProgress, [=](Task &){
provider->saveAs(path);
}));
});
}