[Bf-blender-cvs] [dca5be9b942] master: Fix: Wrong node link drag search menu items for attribute statistic
Hans Goudey
noreply at git.blender.org
Wed Dec 22 23:45:47 CET 2021
Commit: dca5be9b942ab03037910e87548375baa09f0068
Author: Hans Goudey
Date: Wed Dec 22 16:45:41 2021 -0600
Branches: master
https://developer.blender.org/rBdca5be9b942ab03037910e87548375baa09f0068
Fix: Wrong node link drag search menu items for attribute statistic
Caused by capturing local variables by reference in a function that
outlives the scope it was created in. Also use a more generic function
for the first two inputs.
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc
index b79125d43d1..e4f2e8ef7f4 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc
@@ -132,16 +132,13 @@ static std::optional<CustomDataType> node_type_from_other_socket(const bNodeSock
static void node_gather_link_searches(GatherLinkSearchOpParams ¶ms)
{
const bNodeType &node_type = params.node_type();
+ const NodeDeclaration &declaration = *params.node_type().fixed_declaration;
+ search_link_ops_for_declarations(params, declaration.inputs().take_front(2));
+
const std::optional<CustomDataType> type = node_type_from_other_socket(params.other_socket());
if (params.in_out() == SOCK_IN) {
- if (params.other_socket().type == SOCK_GEOMETRY) {
- params.add_item(IFACE_("Geometry"), [node_type](LinkSearchOpParams ¶ms) {
- bNode &node = params.add_node(node_type);
- params.connect_available_socket(node, "Geometry");
- });
- }
if (type) {
- params.add_item(IFACE_("Attribute"), [&](LinkSearchOpParams ¶ms) {
+ params.add_item(IFACE_("Attribute"), [node_type, type](LinkSearchOpParams ¶ms) {
bNode &node = params.add_node(node_type);
node.custom1 = *type;
params.update_and_connect_available_socket(node, "Attribute");
@@ -149,9 +146,7 @@ static void node_gather_link_searches(GatherLinkSearchOpParams ¶ms)
}
}
else if (type) {
- /* Only use the first 8 declarations since we set the type automatically. */
- const NodeDeclaration &declaration = *params.node_type().fixed_declaration;
- for (const SocketDeclarationPtr &socket_decl : declaration.outputs().take_front(8)) {
+ for (const SocketDeclarationPtr &socket_decl : declaration.outputs()) {
StringRefNull name = socket_decl->name();
params.add_item(IFACE_(name.c_str()), [node_type, name, type](LinkSearchOpParams ¶ms) {
bNode &node = params.add_node(node_type);
More information about the Bf-blender-cvs
mailing list