diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2022-05-29 04:25:08 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2022-05-29 04:25:08 +0300 |
commit | 13373a6ccd5e44d14cd57374820b895bbd0898f3 (patch) | |
tree | c7608f7a42ba7b901f6e869bc94a6365e80a8591 /source/blender/editors | |
parent | 812a9728f89c87f8b27e634406225f2407d7beb6 (diff) | |
parent | 49368c734bcf16640ec3992c44a7e44009876628 (diff) |
Merge branch 'blender-v3.2-release'
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc index 0505772c668..6beae690b12 100644 --- a/source/blender/editors/transform/transform_snap_object.cc +++ b/source/blender/editors/transform/transform_snap_object.cc @@ -2077,11 +2077,14 @@ static short snapCurve(SnapObjectContext *sctx, nu->bezt[u].vec[1], &dist_px_sq, r_loc); + /* Don't snap if handle is selected (moving), * or if it is aligning to a moving handle. */ - is_selected = (!(nu->bezt[u].f1 & SELECT) && - !(nu->bezt[u].h1 & HD_ALIGN && nu->bezt[u].f3 & SELECT)) != 0; - if (!(is_selected && skip_selected)) { + bool is_selected_h1 = (nu->bezt[u].f1 & SELECT) != 0; + bool is_selected_h2 = (nu->bezt[u].f3 & SELECT) != 0; + bool is_autoalign_h1 = (nu->bezt[u].h1 & HD_ALIGN) != 0; + bool is_autoalign_h2 = (nu->bezt[u].h2 & HD_ALIGN) != 0; + if (!skip_selected || !(is_selected_h1 || (is_autoalign_h1 && is_selected_h2))) { has_snap |= test_projected_vert_dist(&neasrest_precalc, clip_planes_local, clip_plane_len, @@ -2091,9 +2094,7 @@ static short snapCurve(SnapObjectContext *sctx, r_loc); } - is_selected = (!(nu->bezt[u].f3 & SELECT) && - !(nu->bezt[u].h2 & HD_ALIGN && nu->bezt[u].f1 & SELECT)) != 0; - if (!(is_selected && skip_selected)) { + if (!skip_selected || !(is_selected_h2 || (is_autoalign_h2 && is_selected_h1))) { has_snap |= test_projected_vert_dist(&neasrest_precalc, clip_planes_local, clip_plane_len, |