diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc index dcdfd909d9d..bdb3fd85dfb 100644 --- a/source/blender/editors/space_node/node_draw.cc +++ b/source/blender/editors/space_node/node_draw.cc @@ -370,6 +370,10 @@ static void node_update_basis(const bContext *C, bNodeTree *ntree, bNode *node) PointerRNA nodeptr; RNA_pointer_create(&ntree->id, &RNA_Node, node, &nodeptr); + bool node_options = node->typeinfo->draw_buttons && (node->flag & NODE_OPTIONS); + bool inputs_first = node->inputs.first && + !(node->outputs.first || (node->flag & NODE_PREVIEW) || node_options); + /* Get "global" coordinates. */ float locx, locy; node_to_view(node, 0.0f, 0.0f, &locx, &locy); @@ -383,7 +387,7 @@ static void node_update_basis(const bContext *C, bNodeTree *ntree, bNode *node) dy -= NODE_DY; /* Add a little bit of padding above the top socket. */ - if (node->outputs.first || node->inputs.first) { + if (node->outputs.first || inputs_first) { dy -= NODE_DYS / 2; } @@ -484,7 +488,7 @@ static void node_update_basis(const bContext *C, bNodeTree *ntree, bNode *node) } /* Buttons rect? */ - if (node->typeinfo->draw_buttons && (node->flag & NODE_OPTIONS)) { + if (node_options) { dy -= NODE_DYS / 2; /* Set this for `uifunc()` that don't use layout engine yet. */