diff options
-rw-r--r-- | editor/editor_node.cpp | 4 | ||||
-rw-r--r-- | editor/editor_node.h | 4 | ||||
-rw-r--r-- | editor/editor_resource_picker.cpp | 11 |
3 files changed, 14 insertions, 5 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 6f984f6fab..1c079bfca2 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5324,7 +5324,7 @@ bool EditorNode::is_distraction_free_mode_enabled() const { return distraction_free->is_pressed(); } -Variant EditorNode::drag_resource(const Ref<Resource> &p_res, Control *p_from) { +Dictionary EditorNode::drag_resource(const Ref<Resource> &p_res, Control *p_from) { Control *drag_control = memnew(Control); TextureRect *drag_preview = memnew(TextureRect); Label *label = memnew(Label); @@ -5364,7 +5364,7 @@ Variant EditorNode::drag_resource(const Ref<Resource> &p_res, Control *p_from) { return drag_data; } -Variant EditorNode::drag_files_and_dirs(const Vector<String> &p_paths, Control *p_from) { +Dictionary EditorNode::drag_files_and_dirs(const Vector<String> &p_paths, Control *p_from) { bool has_folder = false; bool has_file = false; for (int i = 0; i < p_paths.size(); i++) { diff --git a/editor/editor_node.h b/editor/editor_node.h index 8bcf29811d..96acc8bf46 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -870,8 +870,8 @@ public: bool is_exiting() const { return exiting; } - Variant drag_resource(const Ref<Resource> &p_res, Control *p_from); - Variant drag_files_and_dirs(const Vector<String> &p_paths, Control *p_from); + Dictionary drag_resource(const Ref<Resource> &p_res, Control *p_from); + Dictionary drag_files_and_dirs(const Vector<String> &p_paths, Control *p_from); void add_tool_menu_item(const String &p_name, const Callable &p_callback); void add_tool_submenu_item(const String &p_name, PopupMenu *p_submenu); diff --git a/editor/editor_resource_picker.cpp b/editor/editor_resource_picker.cpp index 1cb71aa933..eee589489d 100644 --- a/editor/editor_resource_picker.cpp +++ b/editor/editor_resource_picker.cpp @@ -615,6 +615,13 @@ void EditorResourcePicker::_get_allowed_types(bool p_with_convert, HashSet<Strin } bool EditorResourcePicker::_is_drop_valid(const Dictionary &p_drag_data) const { + { + const ObjectID source_picker = p_drag_data.get("source_picker", ObjectID()); + if (source_picker == get_instance_id()) { + return false; + } + } + if (base_type.is_empty()) { return true; } @@ -670,7 +677,9 @@ bool EditorResourcePicker::_is_type_valid(const String &p_type_name, const HashS Variant EditorResourcePicker::get_drag_data_fw(const Point2 &p_point, Control *p_from) { if (edited_resource.is_valid()) { - return EditorNode::get_singleton()->drag_resource(edited_resource, p_from); + Dictionary drag_data = EditorNode::get_singleton()->drag_resource(edited_resource, p_from); + drag_data["source_picker"] = get_instance_id(); + return drag_data; } return Variant(); |