The ImGuiTextEditCallbackData structure contains information used for an InputText callback function. This can be useful for determining the type of callback that was fired as well as what data was used to cause the callback. The following data is exposed in this structure, to Lua addons:
struct ImGuiTextEditCallbackData { ImGuiInputTextFlags EventFlags; // ImGuiInputTextFlags_Callback... value from the ImGuiInputTextFlags_ enumeration. (Read Only) ImGuiInputTextFlags Flags; // The flags of the input creation call. (Read Only) bool ReadOnly; // The readonly flag of the input box. (Read Only) ImWchar EventChar; // The character that was input. ImGuiKey EventKey; // The key pressed to cause this event. (Read Only) char* Buf; // The current buffer of text in the input. int BufTextLen; // The current length of text in buf. int BufSize; // Maximum length that buf can hold. (Read Only) bool BufDirty; // Must be set to true if Buf or BufTextLen is modified. int CursorPos; // The current carrot position within the input text. int SelectionStart;// The selection start position. int SelectionEnd; // The selection end position. void DeleteChars(int pos, int count); void InsertChars(int pos, const char* new_text); bool HasSelection(); };
Some fields are read-only and cannot be edited.
If you edit the 'Buf' field, you must update the BufTextLen to the new length as well as set BufDirty to true in order for it to be properly updated. To do this easily you can make use of the DeleteChars and InsertChars functions which will handle the property adjustments for you.
You may also want to set CursorPos to the end of the string for a more expected result.