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?)
| 3776 | // stb_textedit internally allows for a single undo record to do addition and deletion, but somehow, calling |
| 3777 | // the stb_textedit_paste() function creates two separate records, so we perform it manually. (FIXME: Report to nothings/stb?) |
| 3778 | static void stb_textedit_replace(ImGuiInputTextState* str, STB_TexteditState* state, const STB_TEXTEDIT_CHARTYPE* text, int text_len) |
| 3779 | { |
| 3780 | stb_text_makeundo_replace(str, state, 0, str->CurLenW, text_len); |
| 3781 | ImStb::STB_TEXTEDIT_DELETECHARS(str, 0, str->CurLenW); |
| 3782 | if (text_len <= 0) |
| 3783 | return; |
| 3784 | if (ImStb::STB_TEXTEDIT_INSERTCHARS(str, 0, text, text_len)) |
| 3785 | { |
| 3786 | state->cursor = text_len; |
| 3787 | state->has_preferred_x = 0; |
| 3788 | return; |
| 3789 | } |
| 3790 | IM_ASSERT(0); // Failed to insert character, normally shouldn't happen because of how we currently use stb_textedit_replace() |
| 3791 | } |
| 3792 | |
| 3793 | } // namespace ImStb |
| 3794 |
no test coverage detected