InputText: Fixed a case where deactivation frame would write to underlying buffer or call CallbackResize although unnecessary, in a frame where the return value was false.

features/potocpav-newer-lines-2
ocornut ago%!(EXTRA string=2 years)
parent 3349296370
commit b32ef809c3
  1. 3
      docs/CHANGELOG.txt
  2. 4
      imgui_widgets.cpp

@ -42,6 +42,9 @@ Breaking changes:
Other changes: Other changes:
- InputText: Fixed a case where deactivation frame would write to underlying
buffer or call CallbackResize although unnecessary, in a frame where the
return value was false.
- IO: Added io.ClearEventsQueue() to clear incoming inputs events. (#4921) - IO: Added io.ClearEventsQueue() to clear incoming inputs events. (#4921)
May be useful in conjunction with io.ClearInputsKeys() if you need to clear May be useful in conjunction with io.ClearInputsKeys() if you need to clear
both current inputs state and queued events (e.g. when using blocking native both current inputs state and queued events (e.g. when using blocking native

@ -4719,11 +4719,11 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
// Handle reapplying final data on deactivation (see InputTextDeactivateHook() for details) // Handle reapplying final data on deactivation (see InputTextDeactivateHook() for details)
if (g.InputTextDeactivatedState.ID == id) if (g.InputTextDeactivatedState.ID == id)
{ {
if (g.ActiveId != id && IsItemDeactivatedAfterEdit() && !is_readonly) if (g.ActiveId != id && IsItemDeactivatedAfterEdit() && !is_readonly && strcmp(g.InputTextDeactivatedState.TextA.Data, buf) != 0)
{ {
apply_new_text = g.InputTextDeactivatedState.TextA.Data; apply_new_text = g.InputTextDeactivatedState.TextA.Data;
apply_new_text_length = g.InputTextDeactivatedState.TextA.Size - 1; apply_new_text_length = g.InputTextDeactivatedState.TextA.Size - 1;
value_changed |= (strcmp(g.InputTextDeactivatedState.TextA.Data, buf) != 0); value_changed = true;
//IMGUI_DEBUG_LOG("InputText(): apply Deactivated data for 0x%08X: \"%.*s\".\n", id, apply_new_text_length, apply_new_text); //IMGUI_DEBUG_LOG("InputText(): apply Deactivated data for 0x%08X: \"%.*s\".\n", id, apply_new_text_length, apply_new_text);
} }
g.InputTextDeactivatedState.ID = 0; g.InputTextDeactivatedState.ID = 0;

Loading…
Cancel
Save