@@ -119,6 +119,7 @@ void ProjectExportDialog::_notification(int p_what) {
119119
120120 case NOTIFICATION_THEME_CHANGED : {
121121 _script_encryption_key_visibility_changed (show_script_key->is_pressed ());
122+ options_filter->set_right_icon (get_editor_theme_icon (SNAME (" Search" )));
122123 duplicate_preset->set_button_icon (presets->get_editor_theme_icon (SNAME (" Duplicate" )));
123124 delete_preset->set_button_icon (presets->get_editor_theme_icon (SNAME (" Remove" )));
124125 patch_add_btn->set_button_icon (get_editor_theme_icon (SNAME (" Add" )));
@@ -128,6 +129,7 @@ void ProjectExportDialog::_notification(int p_what) {
128129 duplicate_preset->set_button_icon (presets->get_editor_theme_icon (SNAME (" Duplicate" )));
129130 delete_preset->set_button_icon (presets->get_editor_theme_icon (SNAME (" Remove" )));
130131 patch_add_btn->set_button_icon (get_editor_theme_icon (SNAME (" Add" )));
132+ options_filter->set_right_icon (get_editor_theme_icon (SNAME (" Search" )));
131133 connect (SceneStringName (confirmed), callable_mp (this , &ProjectExportDialog::_export_pck_zip));
132134 _update_export_all ();
133135 } break ;
@@ -279,6 +281,7 @@ void ProjectExportDialog::_edit_preset(int p_index) {
279281 updating = true ;
280282
281283 presets->select (p_index);
284+ _options_filter_changed (options_filter->get_text ());
282285 duplicate_preset->set_disabled (false );
283286 delete_preset->set_disabled (false );
284287 get_ok_button ()->set_disabled (false );
@@ -522,6 +525,27 @@ void ProjectExportDialog::_advanced_options_pressed() {
522525 _update_presets ();
523526}
524527
528+ void ProjectExportDialog::_options_filter_changed (const String &p_filter) {
529+ const bool search_active = !p_filter.is_empty ();
530+ if (search_active) {
531+ advanced_options->set_pressed_no_signal (true );
532+ advanced_options->set_disabled (true );
533+ advanced_options->set_tooltip_text (TTRC (" Advanced settings are always shown when searching." ));
534+ } else {
535+ advanced_options->set_pressed_no_signal (EDITOR_GET (" _export_preset_advanced_mode" ));
536+ advanced_options->set_disabled (false );
537+ advanced_options->set_tooltip_text (TTR (" If checked, the advanced options will be shown." ));
538+ }
539+
540+ const int current_preset = presets->get_current ();
541+ if (current_preset >= 0 && current_preset < EditorExport::get_singleton ()->get_export_preset_count ()) {
542+ Ref<EditorExportPreset> current = EditorExport::get_singleton ()->get_export_preset (current_preset);
543+ if (current.is_valid ()) {
544+ current->set_options_search_active (search_active);
545+ }
546+ }
547+ }
548+
525549void ProjectExportDialog::_runnable_pressed () {
526550 if (updating) {
527551 return ;
@@ -1650,12 +1674,27 @@ ProjectExportDialog::ProjectExportDialog() {
16501674
16511675 // Main preset parameters.
16521676
1677+ VBoxContainer *parameters_vb = memnew (VBoxContainer);
1678+ parameters_vb->set_name (TTRC (" Options" ));
1679+ parameters_vb->set_v_size_flags (Control::SIZE_EXPAND_FILL );
1680+ sections->add_child (parameters_vb);
1681+
1682+ options_filter = memnew (LineEdit);
1683+ options_filter->set_placeholder (TTRC (" Filter Options" ));
1684+ options_filter->set_accessibility_name (TTRC (" Filter Options" ));
1685+ options_filter->set_clear_button_enabled (true );
1686+ options_filter->set_virtual_keyboard_show_on_focus (false );
1687+ options_filter->set_h_size_flags (Control::SIZE_EXPAND_FILL );
1688+ options_filter->connect (SceneStringName (text_changed), callable_mp (this , &ProjectExportDialog::_options_filter_changed));
1689+ parameters_vb->add_child (options_filter);
1690+
16531691 parameters = memnew (EditorInspector);
1654- parameters->set_name (TTRC (" Options" ));
16551692 parameters->set_mark_unsaved (false );
16561693 parameters->set_v_size_flags (Control::SIZE_EXPAND_FILL );
16571694 parameters->set_use_doc_hints (true );
1658- sections->add_child (parameters);
1695+ parameters->register_text_enter (options_filter);
1696+ parameters->set_use_filter (true );
1697+ parameters_vb->add_child (parameters);
16591698 parameters->connect (" property_edited" , callable_mp (this , &ProjectExportDialog::_update_parameters));
16601699 EditorExport::get_singleton ()->connect (" export_presets_updated" , callable_mp (this , &ProjectExportDialog::_force_update_current_preset_parameters));
16611700
0 commit comments