mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Using Tab keys entirely now, ignoring Tab character. Technically affect who owns the repeat rate.
This commit is contained in:
		@@ -3815,7 +3815,7 @@ static bool InputTextFilterCharacter(unsigned int* p_char, ImGuiInputTextFlags f
 | 
			
		||||
    if (c < 0x20)
 | 
			
		||||
    {
 | 
			
		||||
        bool pass = false;
 | 
			
		||||
        pass |= (c == '\n' && (flags & ImGuiInputTextFlags_Multiline));
 | 
			
		||||
        pass |= (c == '\n' && (flags & ImGuiInputTextFlags_Multiline)); // Note that an Enter KEY will emit \r and be ignored (we poll for KEY in InputText() code)
 | 
			
		||||
        pass |= (c == '\t' && (flags & ImGuiInputTextFlags_AllowTabInput));
 | 
			
		||||
        if (!pass)
 | 
			
		||||
            return false;
 | 
			
		||||
@@ -4201,16 +4201,15 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
 | 
			
		||||
        if (state->SelectedAllMouseLock && !io.MouseDown[0])
 | 
			
		||||
            state->SelectedAllMouseLock = false;
 | 
			
		||||
 | 
			
		||||
        // It is ill-defined whether the backend needs to send a \t character when pressing the TAB keys.
 | 
			
		||||
        // Win32 and GLFW naturally do it but not SDL.
 | 
			
		||||
        // We except 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 (!io.InputQueueCharacters.contains('\t'))
 | 
			
		||||
            {
 | 
			
		||||
                unsigned int c = '\t'; // Insert TAB
 | 
			
		||||
                if (InputTextFilterCharacter(&c, flags, callback, callback_user_data, ImGuiInputSource_Keyboard))
 | 
			
		||||
                    state->OnKeyPressed((int)c);
 | 
			
		||||
            }
 | 
			
		||||
        {
 | 
			
		||||
            unsigned int c = '\t'; // Insert TAB
 | 
			
		||||
            if (InputTextFilterCharacter(&c, flags, callback, callback_user_data, ImGuiInputSource_Keyboard))
 | 
			
		||||
                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.
 | 
			
		||||
@@ -4221,7 +4220,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
 | 
			
		||||
                {
 | 
			
		||||
                    // Insert character if they pass filtering
 | 
			
		||||
                    unsigned int c = (unsigned int)io.InputQueueCharacters[n];
 | 
			
		||||
                    if (c == '\t' && io.KeyShift)
 | 
			
		||||
                    if (c == '\t') // Skip Tab, see above.
 | 
			
		||||
                        continue;
 | 
			
		||||
                    if (InputTextFilterCharacter(&c, flags, callback, callback_user_data, ImGuiInputSource_Keyboard))
 | 
			
		||||
                        state->OnKeyPressed((int)c);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user