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:
authorCampbell Barton <ideasman42@gmail.com>2020-06-14 18:07:59 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-06-14 18:07:59 +0300
commit9464260ed786c7cd76d6c9c83590a3b13407fdcd (patch)
treeeed4c6200debfc87ecdcef54cb59b3184e2cc832 /source/blender/editors/transform/transform_convert.c
parentcbd894e5a8c58a25ed8251aa281e085c0bd7944f (diff)
Fix T76563: Transforming an auto-aligned point won't set it aligned
Correct previous commit that was checking values not yet initialized, causing T77796.
Diffstat (limited to 'source/blender/editors/transform/transform_convert.c')
-rw-r--r--source/blender/editors/transform/transform_convert.c34
1 files changed, 7 insertions, 27 deletions
diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c
index 8496642185d..898e03a974d 100644
--- a/source/blender/editors/transform/transform_convert.c
+++ b/source/blender/editors/transform/transform_convert.c
@@ -70,41 +70,21 @@ bool transform_mode_use_local_origins(const TransInfo *t)
* Transforming around ourselves is no use, fallback to individual origins,
* useful for curve/armatures.
*/
-void transform_around_single_fallback(TransInfo *t)
+void transform_around_single_fallback_ex(TransInfo *t, int data_len_all)
{
if ((ELEM(t->around, V3D_AROUND_CENTER_BOUNDS, V3D_AROUND_CENTER_MEDIAN, V3D_AROUND_ACTIVE)) &&
transform_mode_use_local_origins(t)) {
-
- bool is_data_single = false;
- if (t->data_len_all == 1) {
- is_data_single = true;
- }
- else if (t->data_len_all == 3) {
- if (t->obedit_type == OB_CURVE) {
- /* Special case check for curve, if we have a single curve bezier triple selected
- * treat */
- FOREACH_TRANS_DATA_CONTAINER (t, tc) {
- if (!tc->data_len) {
- continue;
- }
- if (tc->data_len == 3) {
- const TransData *td = tc->data;
- if ((td[0].flag | td[1].flag | td[2].flag) & TD_BEZTRIPLE) {
- if ((td[0].loc == td[1].loc) && (td[1].loc == td[2].loc)) {
- is_data_single = true;
- }
- }
- }
- break;
- }
- }
- }
- if (is_data_single) {
+ if (data_len_all == 1) {
t->around = V3D_AROUND_LOCAL_ORIGINS;
}
}
}
+void transform_around_single_fallback(TransInfo *t)
+{
+ transform_around_single_fallback_ex(t, t->data_len_all);
+}
+
/* -------------------------------------------------------------------- */
/** \name Proportional Editing
* \{ */