From 33637e92b578d19b0a0864bc0a231636289a48ba Mon Sep 17 00:00:00 2001 From: WerWolv Date: Fri, 26 Jan 2024 22:08:46 +0100 Subject: [PATCH] impr: Make changing pattern settings re-evaluate the code --- .../content/views/view_pattern_editor.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index c5d7330d3..49d149270 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -579,27 +579,33 @@ namespace hex::plugin::builtin { if (pl::core::Token::isSigned(variable.type)) { i64 value = hex::get_or(variable.value, 0); - ImGui::InputScalar(label.c_str(), ImGuiDataType_S64, &value); + if (ImGui::InputScalar(label.c_str(), ImGuiDataType_S64, &value)) + m_hasUnevaluatedChanges = true; variable.value = i128(value); } else if (pl::core::Token::isUnsigned(variable.type)) { u64 value = hex::get_or(variable.value, 0); - ImGui::InputScalar(label.c_str(), ImGuiDataType_U64, &value); + if (ImGui::InputScalar(label.c_str(), ImGuiDataType_U64, &value)) + m_hasUnevaluatedChanges = true; variable.value = u128(value); } else if (pl::core::Token::isFloatingPoint(variable.type)) { auto value = hex::get_or(variable.value, 0.0); - ImGui::InputScalar(label.c_str(), ImGuiDataType_Double, &value); + if (ImGui::InputScalar(label.c_str(), ImGuiDataType_Double, &value)) + m_hasUnevaluatedChanges = true; variable.value = value; } else if (variable.type == pl::core::Token::ValueType::Boolean) { auto value = hex::get_or(variable.value, false); - ImGui::Checkbox(label.c_str(), &value); + if (ImGui::Checkbox(label.c_str(), &value)) + m_hasUnevaluatedChanges = true; variable.value = value; } else if (variable.type == pl::core::Token::ValueType::Character) { std::array buffer = { hex::get_or(variable.value, '\x00') }; - ImGui::InputText(label.c_str(), buffer.data(), buffer.size()); + if (ImGui::InputText(label.c_str(), buffer.data(), buffer.size())) + m_hasUnevaluatedChanges = true; variable.value = buffer[0]; } else if (variable.type == pl::core::Token::ValueType::String) { std::string buffer = hex::get_or(variable.value, ""); - ImGui::InputText(label.c_str(), buffer); + if (ImGui::InputText(label.c_str(), buffer)) + m_hasUnevaluatedChanges = true; variable.value = buffer; } }