[Bf-blender-cvs] [fa96f7381c3] master: Cleanup: de-duplicate object-mode locking when selecting

Campbell Barton noreply at git.blender.org
Tue Mar 22 07:44:26 CET 2022


Commit: fa96f7381c3dddefb43a75c845444ac4d5e8fb5a
Author: Campbell Barton
Date:   Tue Mar 22 16:41:11 2022 +1100
Branches: master
https://developer.blender.org/rBfa96f7381c3dddefb43a75c845444ac4d5e8fb5a

Cleanup: de-duplicate object-mode locking when selecting

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

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 73155a3b52f..b51adb7cb5b 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -2450,19 +2450,6 @@ static bool ed_object_select_pick(bContext *C,
         }
       }
     }
-    if (scene->toolsettings->object_flag & SCE_OBJECT_MODE_LOCK) {
-      if (is_obedit == false) {
-        if (basact && !BKE_object_is_mode_compat(basact->object, object_mode)) {
-          if (object_mode == OB_MODE_OBJECT) {
-            struct Main *bmain = CTX_data_main(C);
-            ED_object_mode_generic_exit(bmain, vc.depsgraph, scene, basact->object);
-          }
-          if (!BKE_object_is_mode_compat(basact->object, object_mode)) {
-            basact = NULL;
-          }
-        }
-      }
-    }
   }
   else {
     GPUSelectResult buffer[MAXPICKELEMS];
@@ -2578,31 +2565,30 @@ static bool ed_object_select_pick(bContext *C,
         handled = true;
       }
     }
+  }
 
-    if (scene->toolsettings->object_flag & SCE_OBJECT_MODE_LOCK) {
-      if ((handled == false) && (is_obedit == false)) {
-        if (basact && !BKE_object_is_mode_compat(basact->object, object_mode)) {
-          if (object_mode == OB_MODE_OBJECT) {
-            struct Main *bmain = CTX_data_main(C);
-            ED_object_mode_generic_exit(bmain, vc.depsgraph, scene, basact->object);
-          }
-          if (!BKE_object_is_mode_compat(basact->object, object_mode)) {
-            basact = NULL;
-          }
-        }
+  if ((scene->toolsettings->object_flag & SCE_OBJECT_MODE_LOCK) &&
+      /* No further selection should take place. */
+      (handled == false) &&
+      /* No special logic in edit-mode. */
+      (is_obedit == false)) {
+
+    if (basact && !BKE_object_is_mode_compat(basact->object, object_mode)) {
+      if (object_mode == OB_MODE_OBJECT) {
+        struct Main *bmain = CTX_data_main(C);
+        ED_object_mode_generic_exit(bmain, vc.depsgraph, scene, basact->object);
+      }
+      if (!BKE_object_is_mode_compat(basact->object, object_mode)) {
+        basact = NULL;
       }
     }
-  }
 
-  if (scene->toolsettings->object_flag & SCE_OBJECT_MODE_LOCK) {
     /* Disallow switching modes,
      * special exception for edit-mode - vertex-parent operator. */
-    if ((handled == false) && (is_obedit == false)) {
-      if (oldbasact && basact) {
-        if ((oldbasact->object->mode != basact->object->mode) &&
-            (oldbasact->object->mode & basact->object->mode) == 0) {
-          basact = NULL;
-        }
+    if (basact && oldbasact) {
+      if ((oldbasact->object->mode != basact->object->mode) &&
+          (oldbasact->object->mode & basact->object->mode) == 0) {
+        basact = NULL;
       }
     }
   }



More information about the Bf-blender-cvs mailing list