Skip to content

Commit

Permalink
InputText: reactivating last activated InputText() doesn't restore ho…
Browse files Browse the repository at this point in the history
…rizontal scrolling.

Honestly not sure if the opposite is preferable or not (added commented out in the inactivate render path to test that).
Current behavior added along with recycling: f9928e9
  • Loading branch information
ocornut committed Dec 9, 2024
1 parent f3147f4 commit d264542
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 2 deletions.
2 changes: 2 additions & 0 deletions docs/CHANGELOG.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ Other changes:
processing errors outside of the NewFrame()..EndFrame() scope. (#1651)
- Tables: fixed SetNextWindowScroll() value being ignored by BeginTable() during
the first frame or when scrolling flags have changed. (#8196)
- InputText: reactivating last activated InputText() doesn't restore horizontal scrolling
(which was disabled during deactivation anyway).
- Misc: changed embedded ProggyClean encoding to save a bit of binary space (~12kb to 9.5kb).
- Misc: added IMGUI_DISABLE_DEFAULT_FONT to strip embedded font from binary. (#8161)
[@demonese]
Expand Down
5 changes: 3 additions & 2 deletions imgui_widgets.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4537,6 +4537,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
state->TextA.resize(buf_size + 1); // we use +1 to make sure that .Data is always pointing to at least an empty string.
state->TextLen = (int)strlen(buf);
memcpy(state->TextA.Data, buf, state->TextLen + 1);
state->Scroll = ImVec2(0.0f, 0.0f);

if (recycle_state)
{
Expand All @@ -4546,7 +4547,6 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
}
else
{
state->Scroll = ImVec2(0.0f, 0.0f);
stb_textedit_initialize_state(state->Stb, !is_multiline);
}

Expand Down Expand Up @@ -5287,8 +5287,9 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_

if (is_multiline || (buf_display_end - buf_display) < buf_display_max_length)
{
const ImVec2 draw_scroll = /*state ? ImVec2(state->Scroll.x, 0.0f) :*/ ImVec2(0.0f, 0.0f); // Preserve scroll when inactive?
ImU32 col = GetColorU32(is_displaying_hint ? ImGuiCol_TextDisabled : ImGuiCol_Text);
draw_window->DrawList->AddText(g.Font, g.FontSize, draw_pos, col, buf_display, buf_display_end, 0.0f, is_multiline ? NULL : &clip_rect);
draw_window->DrawList->AddText(g.Font, g.FontSize, draw_pos - draw_scroll, col, buf_display, buf_display_end, 0.0f, is_multiline ? NULL : &clip_rect);
}
}

Expand Down

0 comments on commit d264542

Please sign in to comment.