Allow dragging to specific folders in filesystem dock

This commit is contained in:
Mateus Reis
2024-11-20 04:28:31 +02:00
parent a0cd8f187a
commit 6f76ef4bdd
3 changed files with 15 additions and 1 deletions

View File

@ -5828,7 +5828,11 @@ PopupMenu *EditorNode::get_export_as_menu() {
}
void EditorNode::_dropped_files(const Vector<String> &p_files) {
String to_path = ProjectSettings::get_singleton()->globalize_path(FileSystemDock::get_singleton()->get_current_directory());
String to_path = FileSystemDock::get_singleton()->get_folder_path_at_mouse_position();
if (to_path.is_empty()) {
to_path = FileSystemDock::get_singleton()->get_current_directory();
}
to_path = ProjectSettings::get_singleton()->globalize_path(to_path);
_add_dropped_files_recursive(p_files, to_path);

View File

@ -2749,6 +2749,15 @@ void FileSystemDock::remove_resource_tooltip_plugin(const Ref<EditorResourceTool
tooltip_plugins.remove_at(index);
}
String FileSystemDock::get_folder_path_at_mouse_position() const {
TreeItem *item = tree->get_item_at_position(tree->get_local_mouse_position());
if (!item) {
return String();
}
String fpath = item->get_metadata(0);
return fpath.get_base_dir();
}
Control *FileSystemDock::create_tooltip_for_path(const String &p_path) const {
if (p_path == "Favorites") {
// No tooltip for the "Favorites" group.

View File

@ -380,6 +380,7 @@ public:
String get_current_path() const;
String get_current_directory() const;
String get_folder_path_at_mouse_position() const;
void navigate_to_path(const String &p_path);
void focus_on_path();