[Bf-blender-cvs] [8eedcb6f9dc] soc-2020-greasepencil-curve: GPencil: WIP: convert to curve box/lasso select

Falk David noreply at git.blender.org
Sat Jul 18 13:06:37 CEST 2020


Commit: 8eedcb6f9dc7f16e46fb6771b567a83cba87ff8b
Author: Falk David
Date:   Sat Jul 18 13:05:06 2020 +0200
Branches: soc-2020-greasepencil-curve
https://developer.blender.org/rB8eedcb6f9dc7f16e46fb6771b567a83cba87ff8b

GPencil: WIP: convert to curve box/lasso select

===================================================================

M	source/blender/editors/gpencil/gpencil_select.c

===================================================================

diff --git a/source/blender/editors/gpencil/gpencil_select.c b/source/blender/editors/gpencil/gpencil_select.c
index 82d456892ae..54779070d1b 100644
--- a/source/blender/editors/gpencil/gpencil_select.c
+++ b/source/blender/editors/gpencil/gpencil_select.c
@@ -1749,6 +1749,7 @@ static bool gpencil_generic_stroke_select(bContext *C,
 {
   GP_SpaceConversion gsc = {NULL};
   bool changed = false;
+  const bool is_curve_edit = (bool)GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd);
   /* init space conversion stuff */
   gpencil_point_conversion_init(C, &gsc);
 
@@ -1821,6 +1822,15 @@ static bool gpencil_generic_stroke_select(bContext *C,
       whole = ED_gpencil_stroke_point_is_inside(gps_active, &gsc, mval, gpstroke_iter.diff_mat);
     }
 
+    if (is_curve_edit && (hit || whole) && gps->editcurve == NULL) {
+      BKE_gpencil_stroke_editcurve_update(gps, gpd->curve_edit_threshold);
+      BKE_gpencil_curve_sync_selection(gps);
+      gps->editcurve->resolution = gpd->editcurve_resolution;
+      gps->flag |= GP_STROKE_NEEDS_CURVE_UPDATE;
+      BKE_gpencil_stroke_geometry_update(gpd, gps);
+      changed = true;
+    }
+
     /* if stroke mode expand selection. */
     if ((strokemode) || (whole)) {
       const bool is_select = BKE_gpencil_stroke_select_check(gps_active) || whole;
@@ -1892,7 +1902,8 @@ static int gpencil_generic_select_exec(bContext *C,
     changed = gpencil_generic_curve_select(
         C, ob, is_inside_fn, box, user_data, strokemode, sel_op);
   }
-  else {
+
+  if (changed == false) {
     changed = gpencil_generic_stroke_select(
         C, ob, gpd, is_inside_fn, box, user_data, strokemode, segmentmode, sel_op, scale);
   }



More information about the Bf-blender-cvs mailing list