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.
This commit is contained in:
parent
14621e7720
commit
dca5be9b94
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue