Skip to content

Commit ddf6e9e

Browse files
committed
Merge pull request #100595 from bruvzg/win_drv_letter
[Windows, FileDialog] Prepend drive letter to the absolute paths without drive letter.
2 parents e51ab56 + b9a00fe commit ddf6e9e

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

editor/gui/editor_file_dialog.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,14 @@ void EditorFileDialog::update_dir() {
410410
}
411411

412412
void EditorFileDialog::_dir_submitted(const String &p_dir) {
413-
dir_access->change_dir(p_dir);
413+
String new_dir = p_dir;
414+
#ifdef WINDOWS_ENABLED
415+
if (drives->is_visible() && !new_dir.is_network_share_path() && new_dir.is_absolute_path() && new_dir.find(":/") == -1 && new_dir.find(":\\") == -1) {
416+
// Non network path without X:/ prefix on Windows, add drive letter.
417+
new_dir = drives->get_item_text(drives->get_selected()).path_join(new_dir);
418+
}
419+
#endif
420+
dir_access->change_dir(new_dir);
414421
invalidate();
415422
update_dir();
416423
_push_history();

scene/gui/file_dialog.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,17 @@ void FileDialog::update_dir() {
398398
}
399399

400400
void FileDialog::_dir_submitted(String p_dir) {
401-
_change_dir(root_prefix.path_join(p_dir));
401+
String new_dir = p_dir;
402+
#ifdef WINDOWS_ENABLED
403+
if (root_prefix.is_empty() && drives->is_visible() && !new_dir.is_network_share_path() && new_dir.is_absolute_path() && new_dir.find(":/") == -1 && new_dir.find(":\\") == -1) {
404+
// Non network path without X:/ prefix on Windows, add drive letter.
405+
new_dir = drives->get_item_text(drives->get_selected()).path_join(new_dir);
406+
}
407+
#endif
408+
if (!root_prefix.is_empty()) {
409+
new_dir = root_prefix.path_join(new_dir);
410+
}
411+
_change_dir(new_dir);
402412
file->set_text("");
403413
_push_history();
404414
}

0 commit comments

Comments
 (0)