mirror of
https://github.com/godotengine/godot.git
synced 2025-12-08 06:09:55 +00:00
Merge pull request #106099 from xefensor/master
Fix edit resource on inspector when inside array or dictionary
This commit is contained in:
commit
f3c44f00a9
2 changed files with 17 additions and 0 deletions
|
|
@ -301,6 +301,10 @@ void EditorPropertyArray::_object_id_selected(const StringName &p_property, Obje
|
||||||
emit_signal(SNAME("object_id_selected"), p_property, p_id);
|
emit_signal(SNAME("object_id_selected"), p_property, p_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorPropertyArray::_resource_selected(const String &p_path, Ref<Resource> p_resource) {
|
||||||
|
emit_signal(SNAME("resource_selected"), get_edited_property(), p_resource);
|
||||||
|
}
|
||||||
|
|
||||||
void EditorPropertyArray::_create_new_property_slot() {
|
void EditorPropertyArray::_create_new_property_slot() {
|
||||||
int idx = slots.size();
|
int idx = slots.size();
|
||||||
HBoxContainer *hbox = memnew(HBoxContainer);
|
HBoxContainer *hbox = memnew(HBoxContainer);
|
||||||
|
|
@ -516,6 +520,9 @@ void EditorPropertyArray::update_property() {
|
||||||
new_prop->set_use_folding(is_using_folding());
|
new_prop->set_use_folding(is_using_folding());
|
||||||
new_prop->connect(SNAME("property_changed"), callable_mp(this, &EditorPropertyArray::_property_changed));
|
new_prop->connect(SNAME("property_changed"), callable_mp(this, &EditorPropertyArray::_property_changed));
|
||||||
new_prop->connect(SNAME("object_id_selected"), callable_mp(this, &EditorPropertyArray::_object_id_selected));
|
new_prop->connect(SNAME("object_id_selected"), callable_mp(this, &EditorPropertyArray::_object_id_selected));
|
||||||
|
if (value_type == Variant::OBJECT) {
|
||||||
|
new_prop->connect("resource_selected", callable_mp(this, &EditorPropertyArray::_resource_selected), CONNECT_DEFERRED);
|
||||||
|
}
|
||||||
new_prop->set_h_size_flags(SIZE_EXPAND_FILL);
|
new_prop->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||||
new_prop->set_read_only(is_read_only());
|
new_prop->set_read_only(is_read_only());
|
||||||
|
|
||||||
|
|
@ -1415,6 +1422,9 @@ void EditorPropertyDictionary::update_property() {
|
||||||
new_prop->set_use_folding(is_using_folding());
|
new_prop->set_use_folding(is_using_folding());
|
||||||
new_prop->connect(SNAME("property_changed"), callable_mp(this, &EditorPropertyDictionary::_property_changed));
|
new_prop->connect(SNAME("property_changed"), callable_mp(this, &EditorPropertyDictionary::_property_changed));
|
||||||
new_prop->connect(SNAME("object_id_selected"), callable_mp(this, &EditorPropertyDictionary::_object_id_selected));
|
new_prop->connect(SNAME("object_id_selected"), callable_mp(this, &EditorPropertyDictionary::_object_id_selected));
|
||||||
|
if (value_type == Variant::OBJECT) {
|
||||||
|
new_prop->connect("resource_selected", callable_mp(this, &EditorPropertyDictionary::_resource_selected), CONNECT_DEFERRED);
|
||||||
|
}
|
||||||
new_prop->set_h_size_flags(SIZE_EXPAND_FILL);
|
new_prop->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||||
if (slot.index != EditorPropertyDictionaryObject::NEW_KEY_INDEX && slot.index != EditorPropertyDictionaryObject::NEW_VALUE_INDEX) {
|
if (slot.index != EditorPropertyDictionaryObject::NEW_KEY_INDEX && slot.index != EditorPropertyDictionaryObject::NEW_VALUE_INDEX) {
|
||||||
new_prop->set_label(" ");
|
new_prop->set_label(" ");
|
||||||
|
|
@ -1477,6 +1487,10 @@ void EditorPropertyDictionary::_object_id_selected(const StringName &p_property,
|
||||||
emit_signal(SNAME("object_id_selected"), p_property, p_id);
|
emit_signal(SNAME("object_id_selected"), p_property, p_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorPropertyDictionary::_resource_selected(const String &p_path, Ref<Resource> p_resource) {
|
||||||
|
emit_signal(SNAME("resource_selected"), get_edited_property(), p_resource);
|
||||||
|
}
|
||||||
|
|
||||||
void EditorPropertyDictionary::_notification(int p_what) {
|
void EditorPropertyDictionary::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_THEME_CHANGED: {
|
case NOTIFICATION_THEME_CHANGED: {
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,8 @@ class EditorPropertyArray : public EditorProperty {
|
||||||
void _reorder_button_up();
|
void _reorder_button_up();
|
||||||
void _create_new_property_slot();
|
void _create_new_property_slot();
|
||||||
|
|
||||||
|
void _resource_selected(const String &p_path, Ref<Resource> p_resource);
|
||||||
|
|
||||||
Node *get_base_node();
|
Node *get_base_node();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -247,6 +249,7 @@ class EditorPropertyDictionary : public EditorProperty {
|
||||||
void _page_changed(int p_page);
|
void _page_changed(int p_page);
|
||||||
void _edit_pressed();
|
void _edit_pressed();
|
||||||
void _property_changed(const String &p_property, Variant p_value, const String &p_name = "", bool p_changing = false);
|
void _property_changed(const String &p_property, Variant p_value, const String &p_name = "", bool p_changing = false);
|
||||||
|
void _resource_selected(const String &p_path, Ref<Resource> p_resource);
|
||||||
void _change_type(Object *p_button, int p_slot_index);
|
void _change_type(Object *p_button, int p_slot_index);
|
||||||
void _change_type_menu(int p_index);
|
void _change_type_menu(int p_index);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue