Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Toenne <lukas.toenne@googlemail.com>2013-11-07 13:15:29 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2013-11-07 13:15:29 +0400
commitc2aca3b517bc27723627399008cfe9ad5248fc9a (patch)
tree1479251cce23a5bdd47be269623eaea0f9200b4d /source/blender/editors
parent81184c61734e16286f48b57ee9d5f32ade5eb5ad (diff)
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.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/transform/transform_conversions.c9
1 files 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));