mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-28 07:47:03 -05:00
fix: More per-provider data access errors
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user