diff --git a/plugins/builtin/include/content/views/view_pattern_editor.hpp b/plugins/builtin/include/content/views/view_pattern_editor.hpp index 46fb3e8df..9b6303e97 100644 --- a/plugins/builtin/include/content/views/view_pattern_editor.hpp +++ b/plugins/builtin/include/content/views/view_pattern_editor.hpp @@ -133,6 +133,7 @@ namespace hex::plugin::builtin { PerProvider> m_possiblePatternFiles; bool m_runAutomatically = false; bool m_triggerEvaluation = false; + std::atomic m_triggerAutoEvaluate = false; bool m_lastEvaluationProcessed = true; bool m_lastEvaluationResult = false; diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index 2d1b4050b..432f211d2 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -281,9 +281,13 @@ namespace hex::plugin::builtin { this->parsePattern(code, provider); if (this->m_runAutomatically) - this->evaluatePattern(code, provider); + this->m_triggerAutoEvaluate = true; }); } + + if (this->m_triggerAutoEvaluate.exchange(false)) { + this->evaluatePattern(this->m_textEditor.GetText(), provider); + } } if (this->m_dangerousFunctionCalled && !ImGui::IsPopupOpen(ImGuiID(0), ImGuiPopupFlags_AnyPopup)) {