Browse Source

Merge pull request #56706 from KoBeWi/we_need_to_go_higher

Rémi Verschelde 3 years ago
parent
commit
c1e78f749e
1 changed files with 13 additions and 1 deletions
  1. 13 1
      editor/editor_file_dialog.cpp

+ 13 - 1
editor/editor_file_dialog.cpp

@@ -130,6 +130,18 @@ void EditorFileDialog::_notification(int p_what) {
 		if (!is_visible()) {
 		if (!is_visible()) {
 			set_process_unhandled_input(false);
 			set_process_unhandled_input(false);
 		}
 		}
+	} else if (p_what == NOTIFICATION_WM_WINDOW_FOCUS_IN) {
+		// Check if the current directory was removed externally (much less likely to happen while editor window is focused).
+		String previous_dir = get_current_dir();
+		while (!dir_access->dir_exists(get_current_dir())) {
+			_go_up();
+
+			// In case we can't go further up, use some fallback and break.
+			if (get_current_dir() == previous_dir) {
+				_dir_submitted(OS::get_singleton()->get_user_data_dir());
+				break;
+			}
+		}
 	}
 	}
 }
 }
 
 
@@ -1306,7 +1318,7 @@ void EditorFileDialog::_recent_selected(int p_idx) {
 }
 }
 
 
 void EditorFileDialog::_go_up() {
 void EditorFileDialog::_go_up() {
-	dir_access->change_dir("..");
+	dir_access->change_dir(get_current_dir().get_base_dir());
 	update_file_list();
 	update_file_list();
 	update_dir();
 	update_dir();
 	_push_history();
 	_push_history();