[Bf-blender-cvs] [28fef09b13b] soc-2021-curves: Preserve link handles state when switching from free toggle
Dilith Jayakody
noreply at git.blender.org
Fri Feb 4 18:41:17 CET 2022
Commit: 28fef09b13b402f048041bc9dfd1657800b3133e
Author: Dilith Jayakody
Date: Fri Feb 4 22:47:29 2022 +0530
Branches: soc-2021-curves
https://developer.blender.org/rB28fef09b13b402f048041bc9dfd1657800b3133e
Preserve link handles state when switching from free toggle
===================================================================
M source/blender/editors/curve/editcurve_pen.c
===================================================================
diff --git a/source/blender/editors/curve/editcurve_pen.c b/source/blender/editors/curve/editcurve_pen.c
index 0b3ae0c6c9a..255c23683b9 100644
--- a/source/blender/editors/curve/editcurve_pen.c
+++ b/source/blender/editors/curve/editcurve_pen.c
@@ -98,6 +98,8 @@ typedef struct CurvePenData {
bool spline_nearby;
/* Whether shortcut for toggling free handles was pressed. */
bool free_toggle_pressed;
+ /* Whether the current handle type of the moved handle is free. */
+ bool free_toggle;
/* Whether shortcut for linking handles was pressed. */
bool link_handles_pressed;
/* Whether the current state of the moved handle is linked. */
@@ -370,7 +372,7 @@ static void move_all_selected_points(ListBase *nurbs,
}
add_v2_v2(change, cpd->move_offset);
- const bool link_handles = cpd->link_handles;
+ const bool link_handles = cpd->link_handles && !cpd->free_toggle;
const bool lock_angle = cpd->lock_angle;
float change_len = 0.0f;
@@ -1582,15 +1584,17 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
if (!cpd->free_toggle_pressed && is_extra_key_pressed(event, free_toggle)) {
toggle_bezt_free_align_handles(nurbs);
+ cpd->free_toggle = !cpd->free_toggle;
cpd->dragging = true;
- cpd->link_handles = false;
}
cpd->free_toggle_pressed = is_extra_key_pressed(event, free_toggle);
if (!cpd->link_handles_pressed && is_extra_key_pressed(event, link_handles)) {
cpd->link_handles = !cpd->link_handles;
if (cpd->link_handles) {
- move_all_selected_points(nurbs, false, false, cpd, event, &vc);
+ if (!cpd->free_toggle_pressed) {
+ move_all_selected_points(nurbs, false, false, cpd, event, &vc);
+ }
}
else {
// Recalculate offset after link handles is turned off
More information about the Bf-blender-cvs
mailing list