[Bf-blender-cvs] [ed55054e57a] blender-v3.3-release: Fix T100204: RMB select (with "Select Tool") causes edit-mesh conflict

Campbell Barton noreply at git.blender.org
Thu Aug 11 03:10:04 CEST 2022


Commit: ed55054e57a35278e90d7ecd512521289d450fd8
Author: Campbell Barton
Date:   Thu Aug 11 11:05:48 2022 +1000
Branches: blender-v3.3-release
https://developer.blender.org/rBed55054e57a35278e90d7ecd512521289d450fd8

Fix T100204: RMB select (with "Select Tool") causes edit-mesh conflict

When RMB select activated the selection tool, Alt-RMB would both
tweak and loop-select.

Fix/workaround this by passing though 'enumerate' unless the option
can be used (when selecting objects or armatures).

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

M	source/blender/editors/space_view3d/view3d_select.c

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

diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 8eff9ee472f..571c39f30cb 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -2893,11 +2893,6 @@ static int view3d_select_exec(bContext *C, wmOperator *op)
   bool changed = false;
   int mval[2];
 
-  RNA_int_get_array(op->ptr, "location", mval);
-
-  view3d_operator_needs_opengl(C);
-  BKE_object_update_select_id(CTX_data_main(C));
-
   if (object_only) {
     obedit = NULL;
     obact = NULL;
@@ -2908,6 +2903,19 @@ static int view3d_select_exec(bContext *C, wmOperator *op)
     center = false;
   }
 
+  if (obedit && enumerate) {
+    /* Enumerate makes no sense in edit-mode unless also explicitly picking objects or bones.
+     * Pass the event through so the event may be handled by loop-select for e.g. see: T100204. */
+    if (obedit->type != OB_ARMATURE) {
+      return OPERATOR_PASS_THROUGH | OPERATOR_CANCELLED;
+    }
+  }
+
+  RNA_int_get_array(op->ptr, "location", mval);
+
+  view3d_operator_needs_opengl(C);
+  BKE_object_update_select_id(CTX_data_main(C));
+
   if (obedit && object_only == false) {
     if (obedit->type == OB_MESH) {
       changed = EDBM_select_pick(C, mval, &params);



More information about the Bf-blender-cvs mailing list