|
@@ -3435,12 +3435,22 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|
if (state->SelectedAllMouseLock && !io.MouseDown[0])
|
|
if (state->SelectedAllMouseLock && !io.MouseDown[0])
|
|
state->SelectedAllMouseLock = false;
|
|
state->SelectedAllMouseLock = false;
|
|
|
|
|
|
|
|
+ // It is ill-defined whether the back-end needs to send a \t character when pressing the TAB keys.
|
|
|
|
+ // Win32 and GLFW naturally do it but not SDL.
|
|
|
|
+ const bool ignore_char_inputs = (io.KeyCtrl && !io.KeyAlt) || (is_osx && io.KeySuper);
|
|
|
|
+ if ((flags & ImGuiInputTextFlags_AllowTabInput) && IsKeyPressedMap(ImGuiKey_Tab) && !ignore_char_inputs && !io.KeyShift && !is_readonly)
|
|
|
|
+ if (!io.InputQueueCharacters.contains('\t'))
|
|
|
|
+ {
|
|
|
|
+ unsigned int c = '\t'; // Insert TAB
|
|
|
|
+ if (InputTextFilterCharacter(&c, flags, callback, callback_user_data))
|
|
|
|
+ state->OnKeyPressed((int)c);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Process regular text input (before we check for Return because using some IME will effectively send a Return?)
|
|
|
|
+ // We ignore CTRL inputs, but need to allow ALT+CTRL as some keyboards (e.g. German) use AltGR (which _is_ Alt+Ctrl) to input certain characters.
|
|
if (io.InputQueueCharacters.Size > 0)
|
|
if (io.InputQueueCharacters.Size > 0)
|
|
{
|
|
{
|
|
- // Process text input (before we check for Return because using some IME will effectively send a Return?)
|
|
|
|
- // We ignore CTRL inputs, but need to allow ALT+CTRL as some keyboards (e.g. German) use AltGR (which _is_ Alt+Ctrl) to input certain characters.
|
|
|
|
- bool ignore_inputs = (io.KeyCtrl && !io.KeyAlt) || (is_osx && io.KeySuper);
|
|
|
|
- if (!ignore_inputs && !is_readonly && !user_nav_input_start)
|
|
|
|
|
|
+ if (!ignore_char_inputs && !is_readonly && !user_nav_input_start)
|
|
for (int n = 0; n < io.InputQueueCharacters.Size; n++)
|
|
for (int n = 0; n < io.InputQueueCharacters.Size; n++)
|
|
{
|
|
{
|
|
// Insert character if they pass filtering
|
|
// Insert character if they pass filtering
|