mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-11-04 09:44:29 +00:00 
			
		
		
		
	Added a flag for text input to disable undo / redo
This commit is contained in:
		@@ -8405,6 +8405,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
 | 
			
		||||
    const bool is_multiline = (flags & ImGuiInputTextFlags_Multiline) != 0;
 | 
			
		||||
    const bool is_editable = (flags & ImGuiInputTextFlags_ReadOnly) == 0;
 | 
			
		||||
    const bool is_password = (flags & ImGuiInputTextFlags_Password) != 0;
 | 
			
		||||
    const bool disable_undo = (flags & ImGuiInputTextFlags_DisableUndo) != 0;
 | 
			
		||||
 | 
			
		||||
    if (is_multiline) // Open group before calling GetID() because groups tracks id created during their spawn
 | 
			
		||||
        BeginGroup();
 | 
			
		||||
@@ -8632,8 +8633,8 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
 | 
			
		||||
                edit_state.OnKeyPressed((int)c);
 | 
			
		||||
        }
 | 
			
		||||
        else if (IsKeyPressedMap(ImGuiKey_Escape))                                                       { clear_active_id = cancel_edit = true; }
 | 
			
		||||
        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); }
 | 
			
		||||
        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); }
 | 
			
		||||
        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable && !disable_undo)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); }
 | 
			
		||||
        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable && !disable_undo)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); }
 | 
			
		||||
        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_A))                                    { edit_state.SelectAll(); edit_state.CursorFollow = true; }
 | 
			
		||||
        else if (is_shortcut_key_only && !is_password && ((IsKeyPressedMap(ImGuiKey_X) && is_editable) || IsKeyPressedMap(ImGuiKey_C)) && (!is_multiline || edit_state.HasSelection()))
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								imgui.h
									
									
									
									
									
								
							@@ -566,6 +566,7 @@ enum ImGuiInputTextFlags_
 | 
			
		||||
    ImGuiInputTextFlags_AlwaysInsertMode    = 1 << 13,  // Insert mode
 | 
			
		||||
    ImGuiInputTextFlags_ReadOnly            = 1 << 14,  // Read-only mode
 | 
			
		||||
    ImGuiInputTextFlags_Password            = 1 << 15,  // Password mode, display all characters as '*'
 | 
			
		||||
    ImGuiInputTextFlags_DisableUndo         = 1 << 16,  // Disable undo / redo
 | 
			
		||||
    // [Internal]
 | 
			
		||||
    ImGuiInputTextFlags_Multiline           = 1 << 20   // For internal use by InputTextMultiline()
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user