diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc index c60785bcde4..ad98aa8da44 100644 --- a/source/blender/blenkernel/intern/node_tree_update.cc +++ b/source/blender/blenkernel/intern/node_tree_update.cc @@ -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); } } diff --git a/source/blender/editors/space_node/drawnode.cc b/source/blender/editors/space_node/drawnode.cc index fbabfc21514..40ba4e1b450 100644 --- a/source/blender/editors/space_node/drawnode.cc +++ b/source/blender/editors/space_node/drawnode.cc @@ -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; } diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc index c9c9f7e79d7..77a6deb95ab 100644 --- a/source/blender/editors/space_node/node_edit.cc +++ b/source/blender/editors/space_node/node_edit.cc @@ -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; } }