@@ -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,12 +129,25 @@ 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 ;
134136 }
135137}
136138
139+ void ProjectExportDialog::shortcut_input (const Ref<InputEvent> &p_event) {
140+ const Ref<InputEventKey> &key = p_event;
141+
142+ if (key.is_valid () && key->is_pressed () && !key->is_echo ()) {
143+ if (ED_IS_SHORTCUT (" editor/open_search" , p_event)) {
144+ options_filter->grab_focus ();
145+ options_filter->select_all ();
146+ options_filter->accept_event ();
147+ }
148+ }
149+ }
150+
137151void ProjectExportDialog::popup_export () {
138152 add_preset->get_popup ()->clear ();
139153 for (int i = 0 ; i < EditorExport::get_singleton ()->get_export_platform_count (); i++) {
@@ -279,6 +293,7 @@ void ProjectExportDialog::_edit_preset(int p_index) {
279293 updating = true ;
280294
281295 presets->select (p_index);
296+ _options_filter_changed (options_filter->get_text ());
282297 duplicate_preset->set_disabled (false );
283298 delete_preset->set_disabled (false );
284299 get_ok_button ()->set_disabled (false );
@@ -522,6 +537,27 @@ void ProjectExportDialog::_advanced_options_pressed() {
522537 _update_presets ();
523538}
524539
540+ void ProjectExportDialog::_options_filter_changed (const String &p_filter) {
541+ const bool search_active = !p_filter.is_empty ();
542+ if (search_active) {
543+ advanced_options->set_pressed_no_signal (true );
544+ advanced_options->set_disabled (true );
545+ advanced_options->set_tooltip_text (TTRC (" Advanced settings are always shown when searching." ));
546+ } else {
547+ advanced_options->set_pressed_no_signal (EDITOR_GET (" _export_preset_advanced_mode" ));
548+ advanced_options->set_disabled (false );
549+ advanced_options->set_tooltip_text (TTR (" If checked, the advanced options will be shown." ));
550+ }
551+
552+ const int current_preset = presets->get_current ();
553+ if (current_preset >= 0 && current_preset < EditorExport::get_singleton ()->get_export_preset_count ()) {
554+ Ref<EditorExportPreset> current = EditorExport::get_singleton ()->get_export_preset (current_preset);
555+ if (current.is_valid ()) {
556+ current->set_options_search_active (search_active);
557+ }
558+ }
559+ }
560+
525561void ProjectExportDialog::_runnable_pressed () {
526562 if (updating) {
527563 return ;
@@ -1539,6 +1575,7 @@ ProjectExportDialog::ProjectExportDialog() {
15391575 set_title (TTR (" Export" ));
15401576 set_flag (FLAG_MAXIMIZE_DISABLED , false );
15411577 set_clamp_to_embedder (true );
1578+ set_process_shortcut_input (true );
15421579
15431580 VBoxContainer *main_vb = memnew (VBoxContainer);
15441581 add_child (main_vb);
@@ -1650,12 +1687,27 @@ ProjectExportDialog::ProjectExportDialog() {
16501687
16511688 // Main preset parameters.
16521689
1690+ VBoxContainer *parameters_vb = memnew (VBoxContainer);
1691+ parameters_vb->set_name (TTRC (" Options" ));
1692+ parameters_vb->set_v_size_flags (Control::SIZE_EXPAND_FILL );
1693+ sections->add_child (parameters_vb);
1694+
1695+ options_filter = memnew (LineEdit);
1696+ options_filter->set_placeholder (TTRC (" Filter Options" ));
1697+ options_filter->set_accessibility_name (TTRC (" Filter Options" ));
1698+ options_filter->set_clear_button_enabled (true );
1699+ options_filter->set_virtual_keyboard_show_on_focus (false );
1700+ options_filter->set_h_size_flags (Control::SIZE_EXPAND_FILL );
1701+ options_filter->connect (SceneStringName (text_changed), callable_mp (this , &ProjectExportDialog::_options_filter_changed));
1702+ parameters_vb->add_child (options_filter);
1703+
16531704 parameters = memnew (EditorInspector);
1654- parameters->set_name (TTRC (" Options" ));
16551705 parameters->set_mark_unsaved (false );
16561706 parameters->set_v_size_flags (Control::SIZE_EXPAND_FILL );
16571707 parameters->set_use_doc_hints (true );
1658- sections->add_child (parameters);
1708+ parameters->register_text_enter (options_filter);
1709+ parameters->set_use_filter (true );
1710+ parameters_vb->add_child (parameters);
16591711 parameters->connect (" property_edited" , callable_mp (this , &ProjectExportDialog::_update_parameters));
16601712 EditorExport::get_singleton ()->connect (" export_presets_updated" , callable_mp (this , &ProjectExportDialog::_force_update_current_preset_parameters));
16611713
0 commit comments