[Bf-blender-cvs] [34d58b74a55] soc-2021-curves: Change link handles functionality to toggle

Dilith Jayakody noreply at git.blender.org
Fri Jan 21 19:33:40 CET 2022


Commit: 34d58b74a5513e4e4f191d0a77114be5474e8453
Author: Dilith Jayakody
Date:   Fri Jan 21 07:39:15 2022 +0530
Branches: soc-2021-curves
https://developer.blender.org/rB34d58b74a5513e4e4f191d0a77114be5474e8453

Change link handles functionality to 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 9ad17ea523a..c65ccc675b3 100644
--- a/source/blender/editors/curve/editcurve_pen.c
+++ b/source/blender/editors/curve/editcurve_pen.c
@@ -98,6 +98,10 @@ typedef struct CurvePenData {
   bool spline_nearby;
   /* Whether shortcut for toggling free handles was pressed. */
   bool free_toggle_pressed;
+  /* Whether shortcut for linking handles was pressed. */
+  bool link_handles_pressed;
+  /* Whether the current state of the moved handle is linked. */
+  bool link_handles;
   /* Whether some action was done. Used for select. */
   bool acted;
   /* Whether a point was found underneath the mouse. */
@@ -1675,8 +1679,12 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
     cpd->dragging = true;
   }
   cpd->free_toggle_pressed = is_extra_key_pressed(event, free_toggle);
+  if (!cpd->link_handles_pressed && is_extra_key_pressed(event, link_handles)) {
+    move_all_selected_points(nurbs, false, true, event, &vc);
+    cpd->link_handles = true;
+  }
+  cpd->link_handles_pressed = is_extra_key_pressed(event, link_handles);
   const bool move_entire_pressed = is_extra_key_pressed(event, move_entire);
-  const bool link_handles_pressed = is_extra_key_pressed(event, link_handles);
 
   if (ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE)) {
     if (!cpd->dragging && WM_event_drag_test(event, event->prev_click_xy) &&
@@ -1698,7 +1706,7 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
        * control point. */
       else if (cpd->new_point) {
         if (is_extra_key_pressed(event, move_entire)) {
-          move_all_selected_points(nurbs, move_entire_pressed, link_handles_pressed, event, &vc);
+          move_all_selected_points(nurbs, move_entire_pressed, cpd->link_handles, event, &vc);
         }
         else {
           move_new_bezt_handles_to_mouse(event, &vc, nurbs);
@@ -1708,7 +1716,7 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
       else if ((select_point || move_point) && !cpd->spline_nearby) {
         if (cpd->found_point) {
           if (move_point) {
-            move_all_selected_points(nurbs, move_entire_pressed, link_handles_pressed, event, &vc);
+            move_all_selected_points(nurbs, move_entire_pressed, cpd->link_handles, event, &vc);
             cpd->acted = true;
           }
         }



More information about the Bf-blender-cvs mailing list