summaryrefslogtreecommitdiffstats
path: root/tools/editor/editor_dir_dialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/editor/editor_dir_dialog.cpp')
-rw-r--r--tools/editor/editor_dir_dialog.cpp15
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;
+
}