diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-10-24 19:01:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-24 19:01:47 +0200 |
commit | 468c2999d08de0fcbca350399965a037326c30ed (patch) | |
tree | 6b8467a96d3e912fa2e8da4126e09261f00c0507 /editor | |
parent | 16bdfcfa4a9e99f158aa9381caeedfc2a7735914 (diff) | |
parent | ecec9b31c4325635a5d1fe981d72691742d34d9d (diff) |
Merge pull request #23161 from groud/fix_fav_in_open_dialog
Fixes favorites not working in the open dialog
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_file_dialog.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index f425d0a995..438d7ea306 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -1135,14 +1135,10 @@ void EditorFileDialog::_update_drives() { } void EditorFileDialog::_favorite_selected(int p_idx) { - - Vector<String> favorited = EditorSettings::get_singleton()->get_favorites(); - ERR_FAIL_INDEX(p_idx, favorited.size()); - - dir_access->change_dir(favorited[p_idx]); + dir_access->change_dir(favorites->get_item_metadata(p_idx)); file->set_text(""); - invalidate(); update_dir(); + invalidate(); _push_history(); } @@ -1192,7 +1188,7 @@ void EditorFileDialog::_update_favorites() { bool res = access == ACCESS_RESOURCES; String current = get_current_dir(); - Ref<Texture> star = get_icon("Favorites", "EditorIcons"); + Ref<Texture> folder_icon = get_icon("Folder", "EditorIcons"); favorites->clear(); favorite->set_pressed(false); @@ -1203,16 +1199,23 @@ void EditorFileDialog::_update_favorites() { if (cres != res) continue; String name = favorited[i]; - - bool setthis = name == current; + bool setthis = false; if (res && name == "res://") { + if (name == current) + setthis = true; name = "/"; + } else if (name.ends_with("/")) { + if (name == current) + setthis = true; + name = name.substr(0, name.length() - 1); + name = name.get_file(); + + favorites->add_item(name, folder_icon); } else { - name = name.get_file() + "/"; + continue; // We don't handle favorite files here } - favorites->add_item(name, star); favorites->set_item_metadata(favorites->get_item_count() - 1, favorited[i]); if (setthis) { |