[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