From 9f2f01c17d19ed19aaf4920089fab50a10d8bf7a Mon Sep 17 00:00:00 2001 From: WerWolv Date: Thu, 15 Feb 2024 22:09:37 +0100 Subject: [PATCH] fix: Modification highlighting not working correctly when provider data was moved --- .../builtin/include/content/views/view_patches.hpp | 2 +- .../builtin/source/content/views/view_patches.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/builtin/include/content/views/view_patches.hpp b/plugins/builtin/include/content/views/view_patches.hpp index 8f8bc7862..1e58c6350 100644 --- a/plugins/builtin/include/content/views/view_patches.hpp +++ b/plugins/builtin/include/content/views/view_patches.hpp @@ -9,7 +9,7 @@ namespace hex::plugin::builtin { class ViewPatches : public View::Window { public: explicit ViewPatches(); - ~ViewPatches() override = default; + ~ViewPatches() override; void drawContent() override; void drawAlwaysVisibleContent() override; diff --git a/plugins/builtin/source/content/views/view_patches.cpp b/plugins/builtin/source/content/views/view_patches.cpp index 5f59afc74..c5ddf2349 100644 --- a/plugins/builtin/source/content/views/view_patches.cpp +++ b/plugins/builtin/source/content/views/view_patches.cpp @@ -38,6 +38,11 @@ namespace hex::plugin::builtin { } }); + MovePerProviderData::subscribe(this, [this](prv::Provider *from, prv::Provider *to) { + m_savedOperations.get(from) = 0; + m_savedOperations.get(to) = 0; + }); + ImHexApi::HexEditor::addForegroundHighlightingProvider([this](u64 offset, const u8* buffer, size_t, bool) -> std::optional { hex::unused(buffer); @@ -104,6 +109,15 @@ namespace hex::plugin::builtin { }); } + ViewPatches::~ViewPatches() { + MovePerProviderData::unsubscribe(this); + EventProviderSaved::unsubscribe(this); + EventProviderDataModified::unsubscribe(this); + EventProviderDataInserted::unsubscribe(this); + EventProviderDataRemoved::unsubscribe(this); + } + + void ViewPatches::drawContent() { auto provider = ImHexApi::Provider::get();