@ -4186,7 +4186,7 @@ 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.
SetKeyOwner ( ImGuiKey_Tab , id ) ;
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)
@ -4316,8 +4316,7 @@ 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)
const bool ignore_char_inputs = ( io . KeyCtrl & & ! io . KeyAlt ) | | ( is_osx & & io . KeySuper ) ;
if ( ( flags & ImGuiInputTextFlags_AllowTabInput ) & & IsKeyPressed ( ImGuiKey_Tab ) & & ! ignore_char_inputs & & ! io . KeyShift & & ! is_readonly )
if ( ( flags & ImGuiInputTextFlags_AllowTabInput ) & & Shortcut ( ImGuiKey_Tab , id ) & & ! is_readonly )
{
unsigned int c = ' \t ' ; // Insert TAB
if ( InputTextFilterCharacter ( & c , flags , callback , callback_user_data , ImGuiInputSource_Keyboard ) )
@ -4326,6 +4325,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
// 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.
const bool ignore_char_inputs = ( io . KeyCtrl & & ! io . KeyAlt ) | | ( is_osx & & io . KeySuper ) ;
if ( io . InputQueueCharacters . Size > 0 )
{
if ( ! ignore_char_inputs & & ! is_readonly & & ! input_requested_by_nav )
@ -4562,7 +4562,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
// The reason we specify the usage semantic (Completion/History) is that Completion needs to disable keyboard TABBING at the moment.
ImGuiInputTextFlags event_flag = 0 ;
ImGuiKey event_key = ImGuiKey_None ;
if ( ( flags & ImGuiInputTextFlags_CallbackCompletion ) ! = 0 & & IsKeyPressed ( ImGuiKey_Tab ) )
if ( ( flags & ImGuiInputTextFlags_CallbackCompletion ) ! = 0 & & Shortcut ( ImGuiKey_Tab , id ) )
{
event_flag = ImGuiInputTextFlags_CallbackCompletion ;
event_key = ImGuiKey_Tab ;