fix: Modification highlighting not working correctly when provider data was moved

This commit is contained in:
WerWolv
2024-02-15 22:09:37 +01:00
parent 12ba05385b
commit 9f2f01c17d
2 changed files with 15 additions and 1 deletions

View File

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

View File

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