diff options
Diffstat (limited to 'tools/editor/editor_dir_dialog.cpp')
-rw-r--r-- | tools/editor/editor_dir_dialog.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tools/editor/editor_dir_dialog.cpp b/tools/editor/editor_dir_dialog.cpp index fda2d9bacf..a6e231cf18 100644 --- a/tools/editor/editor_dir_dialog.cpp +++ b/tools/editor/editor_dir_dialog.cpp @@ -78,6 +78,11 @@ void EditorDirDialog::_update_dir(TreeItem* p_item) { void EditorDirDialog::reload() { + if (!is_visible()) { + must_reload=true; + return; + } + tree->clear(); TreeItem *root = tree->create_item(); root->set_metadata(0,"res://"); @@ -85,6 +90,8 @@ void EditorDirDialog::reload() { root->set_text(0,"/"); _update_dir(root); _item_collapsed(root); + must_reload=false; + } @@ -96,6 +103,12 @@ void EditorDirDialog::_notification(int p_what) { EditorFileSystem::get_singleton()->connect("filesystem_changed",this,"reload"); } + + if (p_what==NOTIFICATION_VISIBILITY_CHANGED) { + if (must_reload && is_visible()) { + reload(); + } + } } void EditorDirDialog::_item_collapsed(Object* _p_item){ @@ -243,6 +256,8 @@ EditorDirDialog::EditorDirDialog() { get_ok()->set_text(TTR("Choose")); + must_reload=false; + } |