[Bf-blender-cvs] [78994637cad] greasepencil-object: GP: Fix problem when select same stroke several times
Antonioya
noreply at git.blender.org
Thu Jan 3 16:41:33 CET 2019
Commit: 78994637cad0f81bc9d9d3e6ef055a03480866b1
Author: Antonioya
Date: Thu Jan 3 13:47:27 2019 +0100
Branches: greasepencil-object
https://developer.blender.org/rB78994637cad0f81bc9d9d3e6ef055a03480866b1
GP: Fix problem when select same stroke several times
===================================================================
M source/blender/editors/gpencil/gpencil_edit.c
===================================================================
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index 0051e66cc7f..d493ecb28eb 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -3738,7 +3738,7 @@ typedef bool(*GPencilTestFn)(
bGPDstroke *gps, bGPDspoint *pt,
const GP_SpaceConversion *gsc, const float diff_mat[4][4], void *user_data);
-void gpencil_cutter_dissolve(bGPdata *gpd, bGPDlayer *hit_layer, bGPDstroke *hit_stroke, bGPDspoint *hit_point)
+void gpencil_cutter_dissolve(bGPdata *gpd, bGPDlayer *hit_layer, bGPDstroke *hit_stroke)
{
bGPDspoint *pt = NULL;
bGPDspoint *pt1 = NULL;
@@ -3816,19 +3816,23 @@ static int gpencil_cutter_lasso_select(
/* select points */
GP_EDITABLE_STROKES_BEGIN(gpstroke_iter, C, gpl, gps)
{
- for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
+ for (i = 0; i < gps->totpoints; i++) {
+ pt = &gps->points[i];
/* convert point coords to screenspace */
const bool is_inside = is_inside_fn(gps, pt, &gsc, gpstroke_iter.diff_mat, user_data);
if (is_inside) {
changed = true;
pt->flag |= GP_SPOINT_SELECT;
gps->flag |= GP_STROKE_SELECT;
+ float r_hita[3], r_hitb[3];
+ ED_gpencil_select_stroke_segment(
+ gpd, gpl, gps, pt, true, true, r_hita, r_hitb);
}
}
}
GP_EDITABLE_STROKES_END(gpstroke_iter);
- /* expand selection and delete */
+ /* dissolve selected points */
bGPDstroke *gpsn;
for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
bGPDframe *gpf = gpl->actframe;
@@ -3838,17 +3842,7 @@ static int gpencil_cutter_lasso_select(
for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gpsn) {
gpsn = gps->next;
if (gps->flag & GP_STROKE_SELECT) {
- for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
- if (pt->flag & GP_SPOINT_SELECT) {
- /* expand selection to segment */
- float r_hita[3], r_hitb[3];
- int hit = ED_gpencil_select_stroke_segment(
- gpd, gpl, gps, pt, true, true, r_hita, r_hitb);
- if (hit > 0) {
- gpencil_cutter_dissolve(gpd, gpl, gps, pt);
- }
- }
- }
+ gpencil_cutter_dissolve(gpd, gpl, gps);
}
}
}
More information about the Bf-blender-cvs
mailing list