Fix T89306: GPencil selection doesn't work correctly with modifiers

The problem was introduced with Bezier modification because the selection code was using the original stroke and not the evaluated version.
This commit is contained in:
Antonio Vazquez 2021-06-21 09:52:17 +02:00
parent 3cf39c09bf
commit ce64cfd6ed
Notes: blender-bot 2023-02-14 19:45:25 +01:00
Referenced by issue #88449, Blender LTS: Maintenance Task 2.93
Referenced by issue #90690, Grease Pencil layer transformations ignored by select tool
Referenced by issue #89306, Grease Pencil: Point selection doesn't work correctly with modifiers
Referenced by issue #88844, AMD GPU - EEVEE - Compositor is broken again in 2.93 (Regression) - Alpha Channel crazy behaviour is back.
Referenced by issue #88014, Freestyle Lines Stopping Short of Vertices & Partially Failing
Referenced by issue #87828, Mantaflow error when using blender in background mode
1 changed files with 4 additions and 4 deletions

View File

@ -1276,7 +1276,7 @@ static bool gpencil_stroke_do_circle_sel(bGPdata *gpd,
pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
bGPDspoint pt_temp;
gpencil_point_to_parent_space(pt_active, diff_mat, &pt_temp);
gpencil_point_to_parent_space(pt, diff_mat, &pt_temp);
gpencil_point_to_xy(gsc, gps, &pt_temp, &x0, &y0);
/* do boundbox check first */
@ -1847,7 +1847,7 @@ static bool gpencil_generic_stroke_select(bContext *C,
bGPDspoint *pt;
int i;
bool hit = false;
for (i = 0, pt = gps_active->points; i < gps_active->totpoints; i++, pt++) {
for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
bGPDspoint *pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
/* convert point coords to screenspace */
@ -1889,7 +1889,7 @@ static bool gpencil_generic_stroke_select(bContext *C,
mval[0] = (box.xmax + box.xmin) / 2;
mval[1] = (box.ymax + box.ymin) / 2;
whole = ED_gpencil_stroke_point_is_inside(gps_active, &gsc, mval, gpstroke_iter.diff_mat);
whole = ED_gpencil_stroke_point_is_inside(gps, &gsc, mval, gpstroke_iter.diff_mat);
}
/* if stroke mode expand selection. */
@ -2252,7 +2252,7 @@ static int gpencil_select_exec(bContext *C, wmOperator *op)
int i;
/* firstly, check for hit-point */
for (i = 0, pt = gps_active->points; i < gps_active->totpoints; i++, pt++) {
for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
int xy[2];
bGPDspoint pt2;