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:
-rw-r--r--source/blender/editors/transform/transform_convert.c17
-rw-r--r--source/blender/editors/transform/transform_convert_cursor.c7
2 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c
index dd577db01a3..c021c084a23 100644
--- a/source/blender/editors/transform/transform_convert.c
+++ b/source/blender/editors/transform/transform_convert.c
@@ -1644,6 +1644,21 @@ void animrecord_check_state(TransInfo *t, struct Object *ob)
}
}
+static void recalcData_cursor_image(TransInfo *t)
+{
+ TransDataContainer *tc = t->data_container;
+ TransData *td = tc->data;
+ float aspect_inv[2];
+
+ aspect_inv[0] = 1.0f / t->aspect[0];
+ aspect_inv[1] = 1.0f / t->aspect[1];
+
+ td->loc[0] = td->loc[0] * aspect_inv[0];
+ td->loc[1] = td->loc[1] * aspect_inv[1];
+
+ DEG_id_tag_update(&t->scene->id, ID_RECALC_COPY_ON_WRITE);
+}
+
static void recalcData_cursor(TransInfo *t)
{
DEG_id_tag_update(&t->scene->id, ID_RECALC_COPY_ON_WRITE);
@@ -1678,6 +1693,8 @@ void recalcData(TransInfo *t)
recalcData_curve(t);
break;
case TC_CURSOR_IMAGE:
+ recalcData_cursor_image(t);
+ break;
case TC_CURSOR_VIEW3D:
recalcData_cursor(t);
break;
diff --git a/source/blender/editors/transform/transform_convert_cursor.c b/source/blender/editors/transform/transform_convert_cursor.c
index e6a972bfc7c..67d85f9610b 100644
--- a/source/blender/editors/transform/transform_convert_cursor.c
+++ b/source/blender/editors/transform/transform_convert_cursor.c
@@ -56,6 +56,13 @@ void createTransCursor_image(TransInfo *t)
}
td->flag = TD_SELECTED;
+
+ /* UV coords are scaled by aspects (see UVsToTransData). This also applies for the Cursor in the
+ * UV Editor which also means that for display and when the cursor coords are flushed
+ * (recalcData_cursor_image), these are converted each time. */
+ cursor_location[0] = cursor_location[0] * t->aspect[0];
+ cursor_location[1] = cursor_location[1] * t->aspect[1];
+
copy_v3_v3(td->center, cursor_location);
td->ob = NULL;