Browse Source

FileSystem dock: Improve duplicate check for directory paths

Supersedes and closes #30225.
Rémi Verschelde 6 years ago
parent
commit
c5ea4b27f9
1 changed files with 5 additions and 5 deletions
  1. 5 5
      editor/filesystem_dock.cpp

+ 5 - 5
editor/filesystem_dock.cpp

@@ -1324,14 +1324,14 @@ void FileSystemDock::_duplicate_operation_confirm() {
 		return;
 		return;
 	}
 	}
 
 
-	String new_path;
 	String base_dir = to_duplicate.path.get_base_dir();
 	String base_dir = to_duplicate.path.get_base_dir();
-	if (to_duplicate.is_file) {
-		new_path = base_dir.plus_file(new_name);
-	} else {
-		new_path = base_dir.substr(0, base_dir.find_last("/")).plus_file(new_name);
+	// get_base_dir() returns "some/path" if the original path was "some/path/", so work it around.
+	if (to_duplicate.path.ends_with("/")) {
+		base_dir = base_dir.get_base_dir();
 	}
 	}
 
 
+	String new_path = base_dir.plus_file(new_name);
+
 	//Present a more user friendly warning for name conflict
 	//Present a more user friendly warning for name conflict
 	DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
 	DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
 	if (da->file_exists(new_path) || da->dir_exists(new_path)) {
 	if (da->file_exists(new_path) || da->dir_exists(new_path)) {