mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 03:18:37 +08:00
Merge pull request #90278 from KoBeWi/self_dropping_resources
Prevent dropping Resource to the same resource picker
This commit is contained in:
commit
92afd2c417
@ -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++) {
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user