diff --git a/doc/classes/EditorResourcePicker.xml b/doc/classes/EditorResourcePicker.xml index 4dfcc6889f..7a52222d4b 100644 --- a/doc/classes/EditorResourcePicker.xml +++ b/doc/classes/EditorResourcePicker.xml @@ -85,8 +85,9 @@ + - Emitted when the resource value was set and user clicked to edit it. + Emitted when the resource value was set and user clicked to edit it. When [code]edit[/code] is [code]true[/code], the signal was caused by the context menu "Edit" option. diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index f10adea019..a5a2bec77f 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -2236,8 +2236,8 @@ EditorPropertyRID::EditorPropertyRID() { ////////////// RESOURCE ////////////////////// -void EditorPropertyResource::_resource_selected(const RES &p_resource) { - if (_can_use_sub_inspector(p_resource)) { +void EditorPropertyResource::_resource_selected(const RES &p_resource, bool p_edit) { + if (!p_edit && _can_use_sub_inspector(p_resource)) { bool unfold = !get_edited_object()->editor_is_section_unfolded(get_edited_property()); get_edited_object()->editor_set_section_unfold(get_edited_property(), unfold); update_property(); diff --git a/editor/editor_properties.h b/editor/editor_properties.h index 012fe23863..23f950b9b9 100644 --- a/editor/editor_properties.h +++ b/editor/editor_properties.h @@ -553,7 +553,7 @@ class EditorPropertyResource : public EditorProperty { bool updating_theme = false; bool opened_editor = false; - void _resource_selected(const RES &p_resource); + void _resource_selected(const RES &p_resource, bool p_edit); void _resource_changed(const RES &p_resource); void _viewport_selected(const NodePath &p_path); diff --git a/editor/editor_resource_picker.cpp b/editor/editor_resource_picker.cpp index 4d316b45ae..647ec661ff 100644 --- a/editor/editor_resource_picker.cpp +++ b/editor/editor_resource_picker.cpp @@ -108,7 +108,7 @@ void EditorResourcePicker::_resource_selected() { return; } - emit_signal("resource_selected", edited_resource); + emit_signal("resource_selected", edited_resource, false); } void EditorResourcePicker::_file_selected(const String &p_path) { @@ -267,7 +267,7 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) { case OBJ_MENU_EDIT: { if (edited_resource.is_valid()) { - emit_signal("resource_selected", edited_resource); + emit_signal("resource_selected", edited_resource, true); } } break; @@ -694,7 +694,7 @@ void EditorResourcePicker::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editable"), "set_editable", "is_editable"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "toggle_mode"), "set_toggle_mode", "is_toggle_mode"); - ADD_SIGNAL(MethodInfo("resource_selected", PropertyInfo(Variant::OBJECT, "resource", PROPERTY_HINT_RESOURCE_TYPE, "Resource"))); + ADD_SIGNAL(MethodInfo("resource_selected", PropertyInfo(Variant::OBJECT, "resource", PROPERTY_HINT_RESOURCE_TYPE, "Resource"), PropertyInfo(Variant::BOOL, "edit"))); ADD_SIGNAL(MethodInfo("resource_changed", PropertyInfo(Variant::OBJECT, "resource", PROPERTY_HINT_RESOURCE_TYPE, "Resource"))); } diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index 79bcf44058..c91f2ae2d0 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -2606,7 +2606,7 @@ void ThemeTypeEditor::_constant_item_changed(float p_value, String p_item_name) edited_theme->set_constant(p_item_name, edited_type, int(p_value)); } -void ThemeTypeEditor::_edit_resource_item(RES p_resource) { +void ThemeTypeEditor::_edit_resource_item(RES p_resource, bool p_edit) { EditorNode::get_singleton()->edit_resource(p_resource); } diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h index d6fc2bedfd..a1b5dd9def 100644 --- a/editor/plugins/theme_editor_plugin.h +++ b/editor/plugins/theme_editor_plugin.h @@ -320,7 +320,7 @@ class ThemeTypeEditor : public MarginContainer { void _color_item_changed(Color p_value, String p_item_name); void _constant_item_changed(float p_value, String p_item_name); - void _edit_resource_item(RES p_resource); + void _edit_resource_item(RES p_resource, bool p_edit); void _font_item_changed(Ref p_value, String p_item_name); void _icon_item_changed(Ref p_value, String p_item_name); void _stylebox_item_changed(Ref p_value, String p_item_name);