From f29ff7fb7e19d8e8dd5dd01ac527f0675467fbf2 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Tue, 24 May 2022 11:55:31 +0200 Subject: Fix T98152: Named Attribute node changes data type for non-existant attributes Skip changing the data type in the node if it is not known. --- .../blender/editors/interface/interface_template_attribute_search.cc | 4 ++-- source/blender/editors/space_node/node_geometry_attribute_search.cc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/interface/interface_template_attribute_search.cc b/source/blender/editors/interface/interface_template_attribute_search.cc index 384e9d1794e..dc8f568d025 100644 --- a/source/blender/editors/interface/interface_template_attribute_search.cc +++ b/source/blender/editors/interface/interface_template_attribute_search.cc @@ -40,8 +40,8 @@ static StringRef attribute_domain_string(const AttributeDomain domain) static bool attribute_search_item_add(uiSearchItems *items, const GeometryAttributeInfo &item) { - const StringRef data_type_name = attribute_data_type_string(item.data_type); - const StringRef domain_name = attribute_domain_string(item.domain); + const StringRef data_type_name = attribute_data_type_string(*item.data_type); + const StringRef domain_name = attribute_domain_string(*item.domain); std::string search_item_text = domain_name + " " + UI_MENU_ARROW_SEP + item.name + UI_SEP_CHAR + data_type_name; diff --git a/source/blender/editors/space_node/node_geometry_attribute_search.cc b/source/blender/editors/space_node/node_geometry_attribute_search.cc index fee64da0459..9c0172cfabf 100644 --- a/source/blender/editors/space_node/node_geometry_attribute_search.cc +++ b/source/blender/editors/space_node/node_geometry_attribute_search.cc @@ -183,9 +183,9 @@ static void attribute_search_exec_fn(bContext *C, void *data_v, void *item_v) BLI_assert(socket->type == SOCK_STRING); /* For the attribute input node, also adjust the type and links connected to the output. */ - if (node->type == GEO_NODE_INPUT_NAMED_ATTRIBUTE) { + if (node->type == GEO_NODE_INPUT_NAMED_ATTRIBUTE && item->data_type.has_value()) { NodeGeometryInputNamedAttribute &storage = *(NodeGeometryInputNamedAttribute *)node->storage; - const CustomDataType new_type = data_type_in_attribute_input_node(item->data_type); + const CustomDataType new_type = data_type_in_attribute_input_node(*item->data_type); if (new_type != storage.data_type) { storage.data_type = new_type; /* Make the output socket with the new type on the attribute input node active. */ -- cgit v1.2.3