[Bf-blender-cvs] [9016ba041f8] soc-2020-greasepencil-curve: GPencil: Implement 'select linked' for editcurve

Falk David noreply at git.blender.org
Tue Jun 9 19:59:20 CEST 2020


Commit: 9016ba041f8fcb8ac4d6f83452c57eda1d7bd4d5
Author: Falk David
Date:   Tue Jun 9 19:56:08 2020 +0200
Branches: soc-2020-greasepencil-curve
https://developer.blender.org/rB9016ba041f8fcb8ac4d6f83452c57eda1d7bd4d5

GPencil: Implement 'select linked' for editcurve

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

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 9b361ff2dea..818ab88db87 100644
--- a/source/blender/editors/gpencil/gpencil_select.c
+++ b/source/blender/editors/gpencil/gpencil_select.c
@@ -227,18 +227,34 @@ static int gpencil_select_linked_exec(bContext *C, wmOperator *op)
     return OPERATOR_CANCELLED;
   }
 
-  /* select all points in selected strokes */
-  CTX_DATA_BEGIN (C, bGPDstroke *, gps, editable_gpencil_strokes) {
-    if (gps->flag & GP_STROKE_SELECT) {
-      bGPDspoint *pt;
-      int i;
+  if (GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd)) {
+    CTX_DATA_BEGIN (C, bGPDstroke *, gps, editable_gpencil_strokes) {
+      if (gps->editcurve != NULL && gps->flag & GP_STROKE_SELECT) {
+        bGPDcurve *gpc = gps->editcurve;
+        for (int i = 0; i < gpc->tot_curve_points; i++) {
+          BezTriple *bezt = &gpc->curve_points[i];
+          bezt->f1 |= SELECT;
+          bezt->f2 |= SELECT;
+          bezt->f3 |= SELECT;
+        }
+      }
+    }
+    CTX_DATA_END;
+  }
+  else {
+    /* select all points in selected strokes */
+    CTX_DATA_BEGIN (C, bGPDstroke *, gps, editable_gpencil_strokes) {
+      if (gps->flag & GP_STROKE_SELECT) {
+        bGPDspoint *pt;
+        int i;
 
-      for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
-        pt->flag |= GP_SPOINT_SELECT;
+        for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
+          pt->flag |= GP_SPOINT_SELECT;
+        }
       }
     }
+    CTX_DATA_END;
   }
-  CTX_DATA_END;
 
   /* updates */
   DEG_id_tag_update(&gpd->id, ID_RECALC_GEOMETRY);



More information about the Bf-blender-cvs mailing list