From d1d73bcff6db9cca94362a81b7e500193cb4db6f Mon Sep 17 00:00:00 2001 From: WerWolv Date: Fri, 3 Jun 2022 10:53:03 +0200 Subject: [PATCH] fix: Editing bytes in the hex editor being broken Fixed #521 --- lib/libimhex/source/api/content_registry.cpp | 2 +- plugins/builtin/source/content/views/view_hex_editor.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/libimhex/source/api/content_registry.cpp b/lib/libimhex/source/api/content_registry.cpp index 1299b7cc8..238725728 100644 --- a/lib/libimhex/source/api/content_registry.cpp +++ b/lib/libimhex/source/api/content_registry.cpp @@ -538,7 +538,7 @@ namespace hex { namespace ContentRegistry::HexEditor { - const int DataVisualizer::TextInputFlags = ImGuiInputTextFlags_AutoSelectAll | ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_NoHorizontalScroll | ImGuiInputTextFlags_EnterReturnsTrue; + const int DataVisualizer::TextInputFlags = ImGuiInputTextFlags_AutoSelectAll | ImGuiInputTextFlags_NoHorizontalScroll; bool DataVisualizer::drawDefaultEditingTextBox(u64 address, const char *format, ImGuiDataType dataType, u8 *data, ImGuiInputTextFlags flags) const { struct UserData { diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 587505bcc..2d9651c08 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -484,8 +484,9 @@ namespace hex::plugin::builtin { ImGui::SetKeyboardFocusHere(); ImGui::CaptureKeyboardFromApp(true); - if (this->m_currDataVisualizer->drawEditing(address, this->m_editingBytes.data(), this->m_editingBytes.size(), this->m_upperCaseHex, this->m_enteredEditingMode) || this->m_shouldModifyValue) { - provider->write(address, this->m_editingBytes.data(), this->m_editingBytes.size()); + if (this->m_currDataVisualizer->drawEditing(*this->m_editingAddress, this->m_editingBytes.data(), this->m_editingBytes.size(), this->m_upperCaseHex, this->m_enteredEditingMode) || this->m_shouldModifyValue) { + + provider->write(*this->m_editingAddress, this->m_editingBytes.data(), this->m_editingBytes.size()); if (!this->m_selectionChanged && !ImGui::IsMouseDown(ImGuiMouseButton_Left) && !ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { auto nextEditingAddress = *this->m_editingAddress + this->m_currDataVisualizer->getBytesPerCell(); @@ -499,6 +500,9 @@ namespace hex::plugin::builtin { this->m_editingAddress = std::nullopt; } + this->m_editingBytes.resize(size); + std::memcpy(this->m_editingBytes.data(), data, size); + this->m_shouldModifyValue = false; }