Repository: godotengine/godot
File: editor/export/project_export.cpp (C++)

Code before:
	script_mode = memnew(OptionButton);
	script_mode->set_accessibility_name(TTRC("GDScript Export Mode:"));
	script_vb->add_margin_child(TTR("GDScript Export Mode:"), script_mode);
	script_mode->add_item(TTR("Text (easier debugging)"), (int)EditorExportPreset::MODE_SCRIPT_TEXT);
	script_mode->add_item(TTR("Binary tokens (faster loading)"), (int)EditorExportPreset::MODE_SCRIPT_BINARY_TOKENS);
	script_mode->add_item(TTR("Compressed binary tokens (smaller files)"), (int)EditorExportPreset::MODE_SCRIPT_BINARY_TOKENS_COMPRESSED);
	script_mode->connect(SceneStringName(item_selected), callable_mp(this, &ProjectExportDialog::_script_export_mode_changed));

	sections->add_child(script_vb);

	sections->connect("tab_changed", callable_mp(this, &ProjectExportDialog::_tab_changed));

	// Disable by default.
	duplicate_preset->set_disabled(true);
	delete_preset->set_disabled(true);
	script_key_error->hide();
	parameters->edit(nullptr);

	// Label shown when no presets are present.

	empty_label = memnew(Label(TTR("No presets found.\nCreate one so that its parameters can be edited here.")));
	empty_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
	empty_label->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
	empty_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
	empty_label->set_clip_text(true); // Necessary to avoid overexpanding the dialog vertically.
	empty_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
	empty_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
	empty_label->hide();
	hbox->add_child(empty_label);

	// Deletion dialog.

	delete_confirm = memnew(ConfirmationDialog);
	add_child(delete_confirm);
	delete_confirm->set_ok_button_text(TTR("Delete"));
	delete_confirm->connect(SceneStringName(confirmed), callable_mp(this, &ProjectExportDialog::_delete_preset_confirm));

	// Export buttons, dialogs and errors.

	set_cancel_button_text(TTR("Close"));
	set_ok_button_text(TTR("Export PCK/ZIP..."));
	get_ok_button()->set_tooltip_text(TTR("Export the project resources as a PCK or ZIP package. This is not a playable build, only the project data without a Godot executable."));
	get_ok_button()->set_disabled(true);

	export_button = add_button(TTR("Export Project..."), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "export");
	export_button->set_tooltip_text(TTR("Export the project as a playable build (Godot executable and project data) for the selected preset."));
	export_button->connect(SceneStringName(pressed), callable_mp(this, &ProjectExportDialog::_export_project));
	// Disable initially before we select a valid preset.
	export_button->set_disabled(true);

	export_all_dialog = memnew(ConfirmationDialog);

Review comment (suggestion):
On minimum size, the list is completely invisible. Why would you want that?

<img width="614" height="136" alt="Image" src="https://github.com/user-attachments/assets/d46bdaa6-212f-4283-a573-cfccfd12bab1" />

With the extra line:

<img width="614" height="161" alt="Image" src="https://github.com/user-attachments/assets/3251af2b-2cb4-431a-809d-54b2e3ebb2a4" />

Code after:

	script_mode = memnew(OptionButton);
	script_mode->set_accessibility_name(TTRC("GDScript Export Mode:"));
	script_vb->add_margin_child(TTR("GDScript Export Mode:"), script_mode);
	script_mode->add_item(TTR("Text (easier debugging)"), (int)EditorExportPreset::MODE_SCRIPT_TEXT);
	script_mode->add_item(TTR("Binary tokens (faster loading)"), (int)EditorExportPreset::MODE_SCRIPT_BINARY_TOKENS);
	script_mode->add_item(TTR("Compressed binary tokens (smaller files)"), (int)EditorExportPreset::MODE_SCRIPT_BINARY_TOKENS_COMPRESSED);
	script_mode->connect(SceneStringName(item_selected), callable_mp(this, &ProjectExportDialog::_script_export_mode_changed));

	sections->add_child(script_vb);

	sections->connect("tab_changed", callable_mp(this, &ProjectExportDialog::_tab_changed));

	// Disable by default.
	duplicate_preset->set_disabled(true);
	delete_preset->set_disabled(true);
	script_key_error->hide();
	parameters->edit(nullptr);

	// Label shown when no presets are present.

	empty_label = memnew(Label(TTRC("No presets found.\nCreate one so that its parameters can be edited here.")));
	empty_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
	empty_label->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
	empty_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
	empty_label->set_clip_text(true); // Necessary to avoid overexpanding the dialog vertically.
	empty_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
	empty_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
	empty_label->hide();
	hbox->add_child(empty_label);

	// Deletion dialog.

	delete_confirm = memnew(ConfirmationDialog);
	add_child(delete_confirm);
	delete_confirm->set_ok_button_text(TTR("Delete"));
	delete_confirm->connect(SceneStringName(confirmed), callable_mp(this, &ProjectExportDialog::_delete_preset_confirm));

	// Export buttons, dialogs and errors.

	set_cancel_button_text(TTR("Close"));
	set_ok_button_text(TTR("Export PCK/ZIP..."));
	get_ok_button()->set_tooltip_text(TTR("Export the project resources as a PCK or ZIP package. This is not a playable build, only the project data without a Godot executable."));
	get_ok_button()->set_disabled(true);

	export_button = add_button(TTR("Export Project..."), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "export");
	export_button->set_tooltip_text(TTR("Export the project as a playable build (Godot executable and project data) for the selected preset."));
	export_button->connect(SceneStringName(pressed), callable_mp(this, &ProjectExportDialog::_export_project));
	// Disable initially before we select a valid preset.
	export_button->set_disabled(true);