diff options
Diffstat (limited to 'editor/editor_properties.cpp')
| -rw-r--r-- | editor/editor_properties.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index ff7ab051b5..c8b4831d63 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -1877,7 +1877,7 @@ void EditorPropertyNodePath::update_property() { assign->set_tooltip(p); if (p == NodePath()) { assign->set_icon(Ref<Texture>()); - assign->set_text(TTR("Assign..")); + assign->set_text(TTR("Assign...")); assign->set_flat(false); return; } @@ -1959,16 +1959,26 @@ void EditorPropertyResource::_file_selected(const String &p_path) { List<PropertyInfo> prop_list; get_edited_object()->get_property_list(&prop_list); - String type; + String property_types; for (List<PropertyInfo>::Element *E = prop_list.front(); E; E = E->next()) { if (E->get().name == get_edited_property() && (E->get().hint & PROPERTY_HINT_RESOURCE_TYPE)) { - type = E->get().hint_string; + property_types = E->get().hint_string; } } + if (!property_types.empty()) { + bool any_type_matches = false; + const Vector<String> split_property_types = property_types.split(","); + for (int i = 0; i < split_property_types.size(); ++i) { + if (res->is_class(split_property_types[i])) { + any_type_matches = true; + break; + } + } - if (!type.empty() && !res->is_class(type)) - EditorNode::get_singleton()->show_warning(vformat(TTR("The selected resource (%s) does not match the type expected for this property (%s)."), res->get_class(), type)); + if (!any_type_matches) + EditorNode::get_singleton()->show_warning(vformat(TTR("The selected resource (%s) does not match any type expected for this property (%s)."), res->get_class(), property_types)); + } emit_signal("property_changed", get_edited_property(), res); update_property(); @@ -2411,6 +2421,7 @@ void EditorPropertyResource::update_property() { if (!sub_inspector) { sub_inspector = memnew(EditorInspector); sub_inspector->set_enable_v_scroll(false); + sub_inspector->set_use_doc_hints(true); sub_inspector->set_use_sub_inspector_bg(true); sub_inspector->set_enable_capitalize_paths(true); @@ -2421,6 +2432,7 @@ void EditorPropertyResource::update_property() { sub_inspector->set_keying(is_keying()); sub_inspector->set_read_only(is_read_only()); sub_inspector->set_use_folding(is_using_folding()); + sub_inspector->set_undo_redo(EditorNode::get_singleton()->get_undo_redo()); sub_inspector_vbox = memnew(VBoxContainer); add_child(sub_inspector_vbox); |