Repository: godotengine/godot
File: editor/project_manager/project_dialog.h (C/C++)

Code before:
	bool rendering_device_checked = false;
	Label *rd_not_supported = nullptr;

	Label *msg = nullptr;
	LineEdit *project_name = nullptr;
	LineEdit *project_path = nullptr;
	LineEdit *install_path = nullptr;
	TextureRect *project_status_rect = nullptr;
	TextureRect *install_status_rect = nullptr;

	OptionButton *vcs_metadata_selection = nullptr;

	CheckBox *edit_check_box = nullptr;

	EditorFileDialog *fdialog_project = nullptr;
	EditorFileDialog *fdialog_install = nullptr;
	AcceptDialog *dialog_error = nullptr;

	String zip_path;
	String zip_title;

	String original_project_path;
	bool duplicate_can_edit = false;

	Vector<bool> _component_valid_flags;
	void _set_component_valid_flags(Components compnent, bool is_valid);

	void _set_message(const String &p_msg, MessageType p_type, InputType input_type = PROJECT_PATH);
	void _validate_path();

	// Project path for MODE_NEW and MODE_INSTALL. Install path for MODE_IMPORT.
	// Install path is only visible when importing a ZIP.
	String _get_target_path();
	void _set_target_path(const String &p_text);

	// Calculated from project name / ZIP name.
	String auto_dir;

	// Updates `auto_dir`. If the target path dir name is equal to `auto_dir` (the default state), the target path is also updated.
	void _update_target_auto_dir();

	// While `create_dir` is disabled, stores the last target path dir name, or an empty string if equal to `auto_dir`.
	String last_custom_target_dir;
	void _create_dir_toggled(bool p_pressed);

	void _project_name_changed();
	void _project_path_changed();
	void _install_path_changed();

	void _browse_project_path();
	void _browse_install_path();

Review comment (suggestion):
```suggestion
	Vector<bool> component_valid_flags;
	void _set_component_valid_flags(Components p_compnent, bool p_is_valid);
```

Code after:
	Label *rd_not_supported = nullptr;

	Label *msg = nullptr;
	LineEdit *project_name = nullptr;
	LineEdit *project_path = nullptr;
	LineEdit *install_path = nullptr;
	TextureRect *project_status_rect = nullptr;
	TextureRect *install_status_rect = nullptr;

	OptionButton *vcs_metadata_selection = nullptr;

	CheckBox *edit_check_box = nullptr;

	EditorFileDialog *fdialog_project = nullptr;
	EditorFileDialog *fdialog_install = nullptr;
	AcceptDialog *dialog_error = nullptr;

	String zip_path;
	String zip_title;

	String original_project_path;
	bool duplicate_can_edit = false;

	BitField<ValidationFlags> invalid_flags;

	void _set_message(const String &p_msg, MessageType p_type, InputType input_type = PROJECT_PATH);
	void _validate_path();

	// Project path for MODE_NEW and MODE_INSTALL. Install path for MODE_IMPORT.
	// Install path is only visible when importing a ZIP.
	String _get_target_path();
	void _set_target_path(const String &p_text);

	// Calculated from project name / ZIP name.
	String auto_dir;

	// Updates `auto_dir`. If the target path dir name is equal to `auto_dir` (the default state), the target path is also updated.
	void _update_target_auto_dir();

	// While `create_dir` is disabled, stores the last target path dir name, or an empty string if equal to `auto_dir`.
	String last_custom_target_dir;
	void _create_dir_toggled(bool p_pressed);

	void _project_name_changed();
	void _project_path_changed();
	void _install_path_changed();

	void _browse_project_path();
	void _browse_install_path();

	void _project_path_selected(const String &p_path);