diff --git a/lib/libimhex/source/api/content_registry.cpp b/lib/libimhex/source/api/content_registry.cpp index 0b25c5e96..3a233b8c6 100644 --- a/lib/libimhex/source/api/content_registry.cpp +++ b/lib/libimhex/source/api/content_registry.cpp @@ -1183,10 +1183,10 @@ namespace hex { }; UserData userData = { - .data = &data, - .maxChars = this->getMaxCharsPerCell(), + .data = &data, + .maxChars = this->getMaxCharsPerCell(), - .editingDone = false + .editingDone = false }; ImGui::PushID(reinterpret_cast(address)); @@ -1198,6 +1198,8 @@ namespace hex { if (data->BufTextLen >= userData.maxChars) userData.editingDone = true; + data->Buf[userData.maxChars] = 0x00; + return 0; }, &userData); ImGui::PopID(); diff --git a/plugins/ui/source/ui/hex_editor.cpp b/plugins/ui/source/ui/hex_editor.cpp index 2b692339b..430cabbe5 100644 --- a/plugins/ui/source/ui/hex_editor.cpp +++ b/plugins/ui/source/ui/hex_editor.cpp @@ -381,6 +381,8 @@ namespace hex::ui { default: break; } + + m_enteredEditingMode = false; } m_editingBytes = buffer; @@ -419,6 +421,7 @@ namespace hex::ui { m_editingAddress = std::nullopt; else { m_editingAddress = nextEditingAddress; + m_enteredEditingMode = true; if (m_mode == Mode::Insert) { std::memset(m_editingBytes.data(), 0x00, size); @@ -449,8 +452,6 @@ namespace hex::ui { if (!m_editingAddress.has_value()) m_editingCellType = CellType::None; - - m_enteredEditingMode = false; } }