Fix #108336: Treat node sockets with muted links as linked #108375

Merged
3 changed files with 6 additions and 10 deletions

View File

@ -527,13 +527,8 @@ class NodeTreeMainUpdater {
{
tree.ensure_topology_cache();
for (bNodeSocket *socket : tree.all_sockets()) {
socket->flag &= ~SOCK_IS_LINKED;
for (const bNodeLink *link : socket->directly_linked_links()) {
if (!link->is_muted()) {
socket->flag |= SOCK_IS_LINKED;
break;
}
}
const bool socket_is_linked = !socket->directly_linked_links().is_empty();
SET_FLAG_FROM_TEST(socket->flag, socket_is_linked, SOCK_IS_LINKED);
}
}

View File

@ -1295,8 +1295,9 @@ static void std_node_socket_draw(
return;
}
if ((sock->in_out == SOCK_OUT) || (sock->flag & SOCK_IS_LINKED) ||
(sock->flag & SOCK_HIDE_VALUE)) {
if ((sock->in_out == SOCK_OUT) || (sock->flag & SOCK_HIDE_VALUE) ||
((sock->flag & SOCK_IS_LINKED) && !(sock->link->is_muted())))
{
node_socket_button_label(C, layout, ptr, node_ptr, text);
return;
}

View File

@ -1098,7 +1098,7 @@ void node_set_hidden_sockets(SpaceNode *snode, bNode *node, int set)
}
}
LISTBASE_FOREACH (bNodeSocket *, sock, &node->outputs) {
if (nodeCountSocketLinks(snode->edittree, sock) == 0) {
if ((sock->flag & SOCK_IS_LINKED) == 0) {
sock->flag |= SOCK_HIDDEN;
}
}