[Bf-blender-cvs] [0381727663e] master: Fix T55745: Checker de-select, inconsistent selection

Yevgeny Makarov noreply at git.blender.org
Wed Sep 4 14:55:14 CEST 2019


Commit: 0381727663ec405916565f0f5f677bdb7e6ac510
Author: Yevgeny Makarov
Date:   Wed Sep 4 22:46:24 2019 +1000
Branches: master
https://developer.blender.org/rB0381727663ec405916565f0f5f677bdb7e6ac510

Fix T55745: Checker de-select, inconsistent selection

With these changes, successive selections result in an even pattern.

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

M	source/blender/editors/curve/editcurve_select.c
M	source/blender/editors/mesh/editmesh_path.c
M	source/blender/editors/mesh/editmesh_select.c
M	source/blender/windowmanager/intern/wm_operator_props.c

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

diff --git a/source/blender/editors/curve/editcurve_select.c b/source/blender/editors/curve/editcurve_select.c
index f67ccf1e4bd..d0abcf32107 100644
--- a/source/blender/editors/curve/editcurve_select.c
+++ b/source/blender/editors/curve/editcurve_select.c
@@ -1311,7 +1311,7 @@ static void select_nth_bezt(Nurb *nu, BezTriple *bezt, const struct CheckerInter
 
   while (a--) {
     const int depth = abs(start - a);
-    if (WM_operator_properties_checker_interval_test(params, depth)) {
+    if (!WM_operator_properties_checker_interval_test(params, depth)) {
       select_beztriple(bezt, DESELECT, SELECT, HIDDEN);
     }
 
@@ -1334,7 +1334,7 @@ static void select_nth_bp(Nurb *nu, BPoint *bp, const struct CheckerIntervalPara
 
   while (a--) {
     const int depth = abs(pnt - startpnt) + abs(row - startrow);
-    if (WM_operator_properties_checker_interval_test(params, depth)) {
+    if (!WM_operator_properties_checker_interval_test(params, depth)) {
       select_bpoint(bp, DESELECT, SELECT, HIDDEN);
     }
 
diff --git a/source/blender/editors/mesh/editmesh_path.c b/source/blender/editors/mesh/editmesh_path.c
index 6fd0ee83b6c..06c41b78c37 100644
--- a/source/blender/editors/mesh/editmesh_path.c
+++ b/source/blender/editors/mesh/editmesh_path.c
@@ -239,8 +239,7 @@ static void mouse_mesh_shortest_path_vert(Scene *UNUSED(scene),
       }
     } while ((node = node->next));
 
-    /* We need to start as if just *after* a 'skip' block... */
-    int depth = op_params->interval_params.skip;
+    int depth = -1;
     node = path;
     do {
       if ((is_path_ordered == false) ||
@@ -430,8 +429,7 @@ static void mouse_mesh_shortest_path_edge(Scene *scene,
       }
     } while ((node = node->next));
 
-    /* We need to start as if just *after* a 'skip' block... */
-    int depth = op_params->interval_params.skip;
+    int depth = -1;
     node = path;
     do {
       if ((is_path_ordered == false) ||
@@ -561,8 +559,7 @@ static void mouse_mesh_shortest_path_face(Scene *UNUSED(scene),
       }
     } while ((node = node->next));
 
-    /* We need to start as if just *after* a 'skip' block... */
-    int depth = op_params->interval_params.skip;
+    int depth = -1;
     node = path;
     do {
       if ((is_path_ordered == false) ||
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index c0bd9e9f14c..53b4efbd968 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -3734,7 +3734,7 @@ static void walker_deselect_nth(BMEditMesh *em,
     if (!BM_elem_flag_test(ele, BM_ELEM_TAG)) {
       /* Deselect elements that aren't at "nth" depth from active */
       const int depth = BMW_current_depth(&walker) - 1;
-      if (WM_operator_properties_checker_interval_test(op_params, depth)) {
+      if (!WM_operator_properties_checker_interval_test(op_params, depth)) {
         BM_elem_select_set(bm, ele, false);
       }
       BM_elem_flag_enable(ele, BM_ELEM_TAG);
diff --git a/source/blender/windowmanager/intern/wm_operator_props.c b/source/blender/windowmanager/intern/wm_operator_props.c
index 34e17a8102a..de82c3942db 100644
--- a/source/blender/windowmanager/intern/wm_operator_props.c
+++ b/source/blender/windowmanager/intern/wm_operator_props.c
@@ -500,19 +500,26 @@ void WM_operator_properties_mouse_select(wmOperatorType *ot)
  */
 void WM_operator_properties_checker_interval(wmOperatorType *ot, bool nth_can_disable)
 {
-  const int nth_default = nth_can_disable ? 1 : 2;
-  const int nth_min = min_ii(nth_default, 2);
+  const int nth_default = nth_can_disable ? 0 : 1;
+  const int nth_min = min_ii(nth_default, 1);
   RNA_def_int(ot->srna,
-              "nth",
+              "skip",
               nth_default,
               nth_min,
               INT_MAX,
-              "Nth Element",
-              "Skip every Nth element",
+              "Deselected",
+              "Number of deselected elements in the repetitive sequence",
               nth_min,
               100);
-  RNA_def_int(
-      ot->srna, "skip", 1, 1, INT_MAX, "Skip", "Number of elements to skip at once", 1, 100);
+  RNA_def_int(ot->srna,
+              "nth",
+              1,
+              1,
+              INT_MAX,
+              "Selected",
+              "Number of selected elements in the repetitive sequence",
+              1,
+              100);
   RNA_def_int(ot->srna,
               "offset",
               0,
@@ -527,7 +534,7 @@ void WM_operator_properties_checker_interval(wmOperatorType *ot, bool nth_can_di
 void WM_operator_properties_checker_interval_from_op(struct wmOperator *op,
                                                      struct CheckerIntervalParams *op_params)
 {
-  const int nth = RNA_int_get(op->ptr, "nth") - 1;
+  const int nth = RNA_int_get(op->ptr, "nth");
   const int skip = RNA_int_get(op->ptr, "skip");
   int offset = RNA_int_get(op->ptr, "offset");
 
@@ -541,6 +548,6 @@ void WM_operator_properties_checker_interval_from_op(struct wmOperator *op,
 bool WM_operator_properties_checker_interval_test(const struct CheckerIntervalParams *op_params,
                                                   int depth)
 {
-  return ((op_params->nth == 0) ||
+  return ((op_params->skip == 0) ||
           ((op_params->offset + depth) % (op_params->skip + op_params->nth) >= op_params->skip));
 }



More information about the Bf-blender-cvs mailing list