@@ -2085,10 +2085,15 @@ Vector<String> FileSystemDock::_tree_get_selected(bool remove_self_inclusion, bo
20852085}
20862086
20872087Vector<String> FileSystemDock::_file_list_get_selected () const {
2088+ Vector<int > selected_ids = files->get_selected_items ();
20882089 Vector<String> selected;
2090+ selected.resize (selected_ids.size ());
20892091
2090- for (int idx : files->get_selected_items ()) {
2091- selected.push_back (files->get_item_metadata (idx));
2092+ String *selected_write = selected.ptrw ();
2093+ int i = 0 ;
2094+ for (const int id : selected_ids) {
2095+ selected_write[i] = files->get_item_metadata (id);
2096+ i++;
20922097 }
20932098 return selected;
20942099}
@@ -2140,18 +2145,12 @@ void FileSystemDock::_tree_rmb_option(int p_option) {
21402145}
21412146
21422147void FileSystemDock::_file_list_rmb_option (int p_option) {
2143- Vector<String> selected;
2144- if (p_option > FILE_MENU_MAX) {
2148+ if (p_option > FILE_MENU_MAX && p_option < CONVERT_BASE_ID) {
21452149 // Extra options don't need paths.
2146- _file_option (p_option, selected );
2150+ _file_option (p_option, {} );
21472151 return ;
21482152 }
2149-
2150- Vector<int > selected_id = files->get_selected_items ();
2151- for (int i = 0 ; i < selected_id.size (); i++) {
2152- selected.push_back (files->get_item_metadata (selected_id[i]));
2153- }
2154- _file_option (p_option, selected);
2153+ _file_option (p_option, _file_list_get_selected ());
21552154}
21562155
21572156void FileSystemDock::_generic_rmb_option_selected (int p_option) {
@@ -3826,7 +3825,7 @@ void FileSystemDock::_file_list_gui_input(Ref<InputEvent> p_event) {
38263825 }
38273826
38283827 if (custom_callback.is_valid ()) {
3829- EditorContextMenuPluginManager::get_singleton ()->invoke_callback (custom_callback, files-> get_selected_items ());
3828+ EditorContextMenuPluginManager::get_singleton ()->invoke_callback (custom_callback, _file_list_get_selected ());
38303829 } else {
38313830 return ;
38323831 }
0 commit comments