diff --git a/plugins/builtin/source/content/views/view_data_processor.cpp b/plugins/builtin/source/content/views/view_data_processor.cpp index b1721c598..4df78542c 100644 --- a/plugins/builtin/source/content/views/view_data_processor.cpp +++ b/plugins/builtin/source/content/views/view_data_processor.cpp @@ -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) { diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index cbf169587..c8df9b9e5 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -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 &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(); } );