|
@@ -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();
|