|
@@ -4251,6 +4251,8 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|
|
g.ActiveIdUsingNavDirMask |= (1 << ImGuiDir_Left) | (1 << ImGuiDir_Right);
|
|
|
if (is_multiline || (flags & ImGuiInputTextFlags_CallbackHistory))
|
|
|
g.ActiveIdUsingNavDirMask |= (1 << ImGuiDir_Up) | (1 << ImGuiDir_Down);
|
|
|
+ SetKeyOwner(ImGuiKey_Enter, id);
|
|
|
+ SetKeyOwner(ImGuiKey_KeypadEnter, id);
|
|
|
SetKeyOwner(ImGuiKey_Home, id);
|
|
|
SetKeyOwner(ImGuiKey_End, id);
|
|
|
if (is_multiline)
|
|
@@ -4260,8 +4262,6 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|
|
}
|
|
|
if (is_osx)
|
|
|
SetKeyOwner(ImGuiMod_Alt, id);
|
|
|
- if (flags & (ImGuiInputTextFlags_CallbackCompletion | ImGuiInputTextFlags_AllowTabInput)) // Disable keyboard tabbing out as we will use the \t character.
|
|
|
- SetShortcutRouting(ImGuiKey_Tab, id);
|
|
|
}
|
|
|
|
|
|
// We have an edge case if ActiveId was set through another widget (e.g. widget being swapped), clear id immediately (don't wait until the end of the function)
|
|
@@ -4390,11 +4390,20 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|
|
|
|
|
// We expect backends to emit a Tab key but some also emit a Tab character which we ignore (#2467, #1336)
|
|
|
// (For Tab and Enter: Win32/SFML/Allegro are sending both keys and chars, GLFW and SDL are only sending keys. For Space they all send all threes)
|
|
|
- if ((flags & ImGuiInputTextFlags_AllowTabInput) && Shortcut(ImGuiKey_Tab, id, ImGuiInputFlags_Repeat) && !is_readonly)
|
|
|
+ if ((flags & ImGuiInputTextFlags_AllowTabInput) && !is_readonly)
|
|
|
{
|
|
|
- unsigned int c = '\t'; // Insert TAB
|
|
|
- if (InputTextFilterCharacter(&g, &c, flags, callback, callback_user_data, ImGuiInputSource_Keyboard))
|
|
|
- state->OnKeyPressed((int)c);
|
|
|
+ if (Shortcut(ImGuiKey_Tab, id, ImGuiInputFlags_Repeat))
|
|
|
+ {
|
|
|
+ unsigned int c = '\t'; // Insert TAB
|
|
|
+ if (InputTextFilterCharacter(&g, &c, flags, callback, callback_user_data, ImGuiInputSource_Keyboard))
|
|
|
+ state->OnKeyPressed((int)c);
|
|
|
+ }
|
|
|
+ // FIXME: Implement Shift+Tab
|
|
|
+ /*
|
|
|
+ if (Shortcut(ImGuiKey_Tab | ImGuiMod_Shift, id, ImGuiInputFlags_Repeat))
|
|
|
+ {
|
|
|
+ }
|
|
|
+ */
|
|
|
}
|
|
|
|
|
|
// Process regular text input (before we check for Return because using some IME will effectively send a Return?)
|