fix: More per-provider data access errors

This commit is contained in:
WerWolv
2025-05-17 22:14:27 +02:00
parent 14d95a7e46
commit bda0b3ce18
2 changed files with 16 additions and 14 deletions

View File

@@ -382,8 +382,11 @@ namespace hex::plugin::builtin {
m_workspaceStack.get(provider).push_back(&m_mainWorkspace.get(provider));
});
EventProviderChanged::subscribe(this, [this](const auto *, const auto *) {
for (auto *workspace : *m_workspaceStack) {
EventProviderChanged::subscribe(this, [this](const auto *, const auto *newProvider) {
if (newProvider == nullptr)
return;
for (auto *workspace : m_workspaceStack.get(newProvider)) {
for (auto &node : workspace->nodes) {
node->setCurrentOverlay(nullptr);
}
@@ -415,7 +418,7 @@ namespace hex::plugin::builtin {
file.writeString(ViewDataProcessor::saveNodes(*m_mainWorkspace).dump(4));
});
}, [this]{
return !m_workspaceStack->empty() && !m_workspaceStack->back()->nodes.empty() && ImHexApi::Provider::isValid();
return ImHexApi::Provider::isValid() && !m_workspaceStack->empty() && !m_workspaceStack->back()->nodes.empty();
});
ContentRegistry::FileHandler::add({ ".hexnode" }, [this](const auto &path) {

View File

@@ -2097,13 +2097,9 @@ namespace hex::plugin::builtin {
m_consoleEditor.get(newProvider).SetSelection(selection.mStart, selection.mEnd);
m_cursorNeedsUpdate.get(newProvider) = true;
m_consoleCursorNeedsUpdate.get(newProvider) = true;
} else {
m_textEditor.get(newProvider).SetText("");
m_consoleEditor.get(newProvider).SetText("");
m_consoleEditor.get(newProvider).SetLongestLineLength(0);
m_textEditor.get(newProvider).SetTextChanged(false);
}
m_textEditor.get(newProvider).SetTextChanged(false);
});
RequestAddVirtualFile::subscribe(this, [this](const std::fs::path &path, const std::vector<u8> &data, Region region) {
@@ -2147,12 +2143,15 @@ namespace hex::plugin::builtin {
TextEditor *ViewPatternEditor::getEditorFromFocusedWindow() {
auto provider = ImHexApi::Provider::get();
if (m_focusedSubWindowName.contains(consoleView)) {
return &m_consoleEditor.get(provider);
}
if (m_focusedSubWindowName.contains(textEditorView)) {
return &m_textEditor.get(provider);
if (provider != nullptr) {
if (m_focusedSubWindowName.contains(consoleView)) {
return &m_consoleEditor.get(provider);
}
if (m_focusedSubWindowName.contains(textEditorView)) {
return &m_textEditor.get(provider);
}
}
return nullptr;
}
@@ -2164,7 +2163,7 @@ namespace hex::plugin::builtin {
/* Export Pattern */
ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.file", "hex.builtin.menu.file.export", "hex.builtin.menu.file.export.pattern" }, ICON_VS_FILE_CODE, 7050, Shortcut::None,
m_exportPatternFile, [this] {
return !wolv::util::trim(m_textEditor.get(ImHexApi::Provider::get()).GetText()).empty() && ImHexApi::Provider::isValid();
return ImHexApi::Provider::isValid() && !wolv::util::trim(m_textEditor.get(ImHexApi::Provider::get()).GetText()).empty();
}
);