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); } } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs