[Bf-blender-cvs] [2cbfa786f30] blender-v2.93-release: Fix T89306: GPencil selection doesn't work correctly with modifiers

Antonio Vazquez noreply at git.blender.org
Mon Aug 23 09:35:47 CEST 2021


Commit: 2cbfa786f305fcc9d9c1463421a40fec8f5d5fff
Author: Antonio Vazquez
Date:   Mon Jun 21 09:52:17 2021 +0200
Branches: blender-v2.93-release
https://developer.blender.org/rB2cbfa786f305fcc9d9c1463421a40fec8f5d5fff

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.

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

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 e1776988186..55521ac4d15 100644
--- a/source/blender/editors/gpencil/gpencil_select.c
+++ b/source/blender/editors/gpencil/gpencil_select.c
@@ -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;



More information about the Bf-blender-cvs mailing list