mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Added ImGuiInputTextFlags_CharsNoBlank stock filter. Tweak examples.
This commit is contained in:
		
							
								
								
									
										30
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -5235,17 +5235,24 @@ static bool InputTextFilterCharacter(unsigned int* p_char, ImGuiInputTextFlags f
 | 
			
		||||
    if (c >= 0xE000 && c <= 0xF8FF) // Filter private Unicode range. I don't imagine anybody would want to input them. GLFW on OSX seems to send private characters for special keys like arrow keys.
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    if (flags & ImGuiInputTextFlags_CharsDecimal)
 | 
			
		||||
        if (!(c >= '0' && c <= '9') && (c != '.') && (c != '-') && (c != '+') && (c != '*') && (c != '/'))
 | 
			
		||||
            return false;
 | 
			
		||||
    if (flags & (ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase | ImGuiInputTextFlags_CharsNoBlank))
 | 
			
		||||
    {
 | 
			
		||||
        if (flags & ImGuiInputTextFlags_CharsDecimal)
 | 
			
		||||
            if (!(c >= '0' && c <= '9') && (c != '.') && (c != '-') && (c != '+') && (c != '*') && (c != '/'))
 | 
			
		||||
                return false;
 | 
			
		||||
 | 
			
		||||
    if (flags & ImGuiInputTextFlags_CharsHexadecimal)
 | 
			
		||||
        if (!(c >= '0' && c <= '9') && !(c >= 'a' && c <= 'f') && !(c >= 'A' && c <= 'F'))
 | 
			
		||||
            return false;
 | 
			
		||||
        if (flags & ImGuiInputTextFlags_CharsHexadecimal)
 | 
			
		||||
            if (!(c >= '0' && c <= '9') && !(c >= 'a' && c <= 'f') && !(c >= 'A' && c <= 'F'))
 | 
			
		||||
                return false;
 | 
			
		||||
 | 
			
		||||
    if (flags & ImGuiInputTextFlags_CharsUppercase)
 | 
			
		||||
        if (c >= 'a' && c <= 'z')
 | 
			
		||||
            *p_char = (c += 'A'-'a');
 | 
			
		||||
        if (flags & ImGuiInputTextFlags_CharsUppercase)
 | 
			
		||||
            if (c >= 'a' && c <= 'z')
 | 
			
		||||
                *p_char = (c += 'A'-'a');
 | 
			
		||||
 | 
			
		||||
        if (flags & ImGuiInputTextFlags_CharsNoBlank)
 | 
			
		||||
            if (c == ' ' || c == '\t')
 | 
			
		||||
                return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (flags & ImGuiInputTextFlags_CallbackCharFilter)
 | 
			
		||||
    {
 | 
			
		||||
@@ -8353,8 +8360,9 @@ void ImGui::ShowTestWindow(bool* opened)
 | 
			
		||||
            static char buf2[64] = ""; ImGui::InputText("decimal", buf2, 64, ImGuiInputTextFlags_CharsDecimal);
 | 
			
		||||
            static char buf3[64] = ""; ImGui::InputText("hexadecimal", buf3, 64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase);
 | 
			
		||||
            static char buf4[64] = ""; ImGui::InputText("uppercase", buf4, 64, ImGuiInputTextFlags_CharsUppercase);
 | 
			
		||||
            struct TextFilters { static int FilterNoSpace(ImGuiTextEditCallbackData* data) { if (data->EventChar == ' ') return 1; return 0; } };
 | 
			
		||||
            static char buf5[64] = ""; ImGui::InputText("custom: no spaces", buf5, 64, ImGuiInputTextFlags_CallbackCharFilter, TextFilters::FilterNoSpace);
 | 
			
		||||
            static char buf5[64] = ""; ImGui::InputText("no blank", buf5, 64, ImGuiInputTextFlags_CharsNoBlank);
 | 
			
		||||
            struct TextFilters { static int FilterImGuiLetters(ImGuiTextEditCallbackData* data) { if (data->EventChar < 256 && strchr("imgui", (char)data->EventChar)) return 0; return 1; } };
 | 
			
		||||
            static char buf6[64] = ""; ImGui::InputText("\"imgui\" letters", buf6, 64, ImGuiInputTextFlags_CallbackCharFilter, TextFilters::FilterImGuiLetters);
 | 
			
		||||
            ImGui::TreePop();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								imgui.h
									
									
									
									
									
								
							@@ -389,12 +389,13 @@ enum ImGuiInputTextFlags_
 | 
			
		||||
    ImGuiInputTextFlags_CharsDecimal        = 1 << 0,   // Allow 0123456789.+-*/
 | 
			
		||||
    ImGuiInputTextFlags_CharsHexadecimal    = 1 << 1,   // Allow 0123456789ABCDEFabcdef
 | 
			
		||||
    ImGuiInputTextFlags_CharsUppercase      = 1 << 2,   // Turn a..z into A..Z
 | 
			
		||||
    ImGuiInputTextFlags_AutoSelectAll       = 1 << 3,   // Select entire text when first taking focus
 | 
			
		||||
    ImGuiInputTextFlags_EnterReturnsTrue    = 1 << 4,   // Return 'true' when Enter is pressed (as opposed to when the value was modified)
 | 
			
		||||
    ImGuiInputTextFlags_CallbackCompletion  = 1 << 5,   // Call user function on pressing TAB (for completion handling)
 | 
			
		||||
    ImGuiInputTextFlags_CallbackHistory     = 1 << 6,   // Call user function on pressing Up/Down arrows (for history handling)
 | 
			
		||||
    ImGuiInputTextFlags_CallbackAlways      = 1 << 7,   // Call user function every time
 | 
			
		||||
    ImGuiInputTextFlags_CallbackCharFilter  = 1 << 8    // Call user function to filter character. Modify data->EventChar to replace/filter input, or return 1 to discard character.
 | 
			
		||||
    ImGuiInputTextFlags_CharsNoBlank        = 1 << 3,   // Filter out spaces, tabs
 | 
			
		||||
    ImGuiInputTextFlags_AutoSelectAll       = 1 << 4,   // Select entire text when first taking focus
 | 
			
		||||
    ImGuiInputTextFlags_EnterReturnsTrue    = 1 << 5,   // Return 'true' when Enter is pressed (as opposed to when the value was modified)
 | 
			
		||||
    ImGuiInputTextFlags_CallbackCompletion  = 1 << 6,   // Call user function on pressing TAB (for completion handling)
 | 
			
		||||
    ImGuiInputTextFlags_CallbackHistory     = 1 << 7,   // Call user function on pressing Up/Down arrows (for history handling)
 | 
			
		||||
    ImGuiInputTextFlags_CallbackAlways      = 1 << 8,   // Call user function every time
 | 
			
		||||
    ImGuiInputTextFlags_CallbackCharFilter  = 1 << 9    // Call user function to filter character. Modify data->EventChar to replace/filter input, or return 1 to discard character.
 | 
			
		||||
    //ImGuiInputTextFlags_AlignCenter       = 1 << 6,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user