stb_textedit internally allows for a single undo record to do addition and deletion, but somehow, calling the stb_textedit_paste() function creates two separate records, so we perform it manually. (FIXME: Report to nothings/stb?)
| 3816 | // stb_textedit internally allows for a single undo record to do addition and deletion, but somehow, calling |
| 3817 | // the stb_textedit_paste() function creates two separate records, so we perform it manually. (FIXME: Report to nothings/stb?) |
| 3818 | static void stb_textedit_replace(ImGuiInputTextState* str, STB_TexteditState* state, const STB_TEXTEDIT_CHARTYPE* text, int text_len) |
| 3819 | { |
| 3820 | stb_text_makeundo_replace(str, state, 0, str->CurLenW, text_len); |
| 3821 | ImStb::STB_TEXTEDIT_DELETECHARS(str, 0, str->CurLenW); |
| 3822 | state->cursor = state->select_start = state->select_end = 0; |
| 3823 | if (text_len <= 0) |
| 3824 | return; |
| 3825 | if (ImStb::STB_TEXTEDIT_INSERTCHARS(str, 0, text, text_len)) |
| 3826 | { |
| 3827 | state->cursor = state->select_start = state->select_end = text_len; |
| 3828 | state->has_preferred_x = 0; |
| 3829 | return; |
| 3830 | } |
| 3831 | IM_ASSERT(0); // Failed to insert character, normally shouldn't happen because of how we currently use stb_textedit_replace() |
| 3832 | } |
| 3833 | } // namespace ImStb |
| 3834 | |
| 3835 | void ImGuiInputTextState::OnKeyPressed(int key) |
no test coverage detected