diff --git a/plugins/builtin/include/content/providers/view_provider.hpp b/plugins/builtin/include/content/providers/view_provider.hpp index 31064790b..51a00441a 100644 --- a/plugins/builtin/include/content/providers/view_provider.hpp +++ b/plugins/builtin/include/content/providers/view_provider.hpp @@ -101,8 +101,28 @@ namespace hex::plugin::builtin { return m_provider->getDataDescription(); } - void loadSettings(const nlohmann::json &settings) override { hex::unused(settings); } - [[nodiscard]] nlohmann::json storeSettings(nlohmann::json settings) const override { return settings; } + void loadSettings(const nlohmann::json &settings) override { + auto id = settings.at("id").get(); + m_startAddress = settings.at("start_address").get(); + m_size = settings.at("size").get(); + + const auto &providers = ImHexApi::Provider::getProviders(); + auto provider = std::ranges::find_if(providers, [id](const prv::Provider *provider) { + return provider->getID() == id; + }); + + if (provider == providers.end()) + return; + + m_provider = *provider; + } + + [[nodiscard]] nlohmann::json storeSettings(nlohmann::json settings) const override { + settings["id"] = m_provider->getID(); + settings["start_address"] = m_startAddress; + settings["size"] = m_size; + return settings; + } [[nodiscard]] std::string getTypeName() const override { return "hex.builtin.provider.view"; diff --git a/plugins/builtin/source/content/providers/file_provider.cpp b/plugins/builtin/source/content/providers/file_provider.cpp index 3b7580f91..c89fa4a40 100644 --- a/plugins/builtin/source/content/providers/file_provider.cpp +++ b/plugins/builtin/source/content/providers/file_provider.cpp @@ -223,7 +223,7 @@ namespace hex::plugin::builtin { } if (m_writable) { - if (m_fileSize < MaxMemoryFileSize && !m_writable) { + if (m_fileSize < MaxMemoryFileSize) { m_data = m_file.readVectorAtomic(0x00, m_fileSize); if (!m_data.empty()) { m_changeTracker = wolv::io::ChangeTracker(m_file);