From c2aca3b517bc27723627399008cfe9ad5248fc9a Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Thu, 7 Nov 2013 09:15:29 +0000 Subject: [PATCH] Fix for node transform offsets when adding new nodes: The transform operator was using the node->totr rect for defining the initial location of the node - but this is only defined after the node has been drawn at least once, so nodes would jump to (0,0) after adding ... Use the locx/locy instead (including DPI factor), which is more reliable. --- source/blender/editors/transform/transform_conversions.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 5332e843ea1..06da1edbcdc 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5963,8 +5963,9 @@ static void createTransObject(bContext *C, TransInfo *t) static void NodeToTransData(TransData *td, TransData2D *td2d, bNode *node) { /* use top-left corner as the transform origin for nodes */ - td2d->loc[0] = node->totr.xmin; - td2d->loc[1] = node->totr.ymax; + /* weirdo - but the node system is a mix of free 2d elements and dpi sensitive UI */ + td2d->loc[0] = UI_DPI_FAC * node->locx; + td2d->loc[1] = UI_DPI_FAC * node->locy; td2d->loc[2] = 0.0f; td2d->loc2d = td2d->loc; /* current location */ @@ -5973,8 +5974,8 @@ static void NodeToTransData(TransData *td, TransData2D *td2d, bNode *node) td->loc = td2d->loc; copy_v3_v3(td->iloc, td->loc); /* use node center instead of origin (top-left corner) */ - td->center[0] = BLI_rctf_cent_x(&node->totr); - td->center[1] = BLI_rctf_cent_y(&node->totr); + td->center[0] = td2d->loc[0] + BLI_rctf_size_x(&node->totr); + td->center[1] = td2d->loc[1] + BLI_rctf_size_y(&node->totr); td->center[2] = 0.0f; memset(td->axismtx, 0, sizeof(td->axismtx));