@ -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?)