[Bf-blender-cvs] [62450e8485d] blender-v3.2-release: WM: suppress assertion when switching tools

Campbell Barton noreply at git.blender.org
Fri May 6 09:46:49 CEST 2022


Commit: 62450e8485ded339889e292e41453398dad5adcc
Author: Campbell Barton
Date:   Fri May 6 17:44:32 2022 +1000
Branches: blender-v3.2-release
https://developer.blender.org/rB62450e8485ded339889e292e41453398dad5adcc

WM: suppress assertion when switching tools

Changing the object mode outside the 3D view would trigger this
assertion. This was harmless, only assert for space types that
define the tools mode.

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

M	source/blender/windowmanager/WM_toolsystem.h
M	source/blender/windowmanager/intern/wm_toolsystem.c

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

diff --git a/source/blender/windowmanager/WM_toolsystem.h b/source/blender/windowmanager/WM_toolsystem.h
index a9e1495d9bf..96094e9e7ef 100644
--- a/source/blender/windowmanager/WM_toolsystem.h
+++ b/source/blender/windowmanager/WM_toolsystem.h
@@ -28,6 +28,11 @@ struct wmOperatorType;
 
 #define WM_TOOLSYSTEM_SPACE_MASK \
   ((1 << SPACE_IMAGE) | (1 << SPACE_NODE) | (1 << SPACE_VIEW3D) | (1 << SPACE_SEQ))
+/**
+ * Space-types that define their own "mode" (as returned by #WM_toolsystem_mode_from_spacetype).
+ */
+#define WM_TOOLSYSTEM_SPACE_MASK_MODE_FROM_SPACE ((1 << SPACE_IMAGE) | (1 << SPACE_SEQ))
+
 /* Values that define a category of active tool. */
 typedef struct bToolKey {
   int space_type;
diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c
index 8c7cf86d050..984a8ef41d0 100644
--- a/source/blender/windowmanager/intern/wm_toolsystem.c
+++ b/source/blender/windowmanager/intern/wm_toolsystem.c
@@ -636,7 +636,8 @@ bToolRef *WM_toolsystem_ref_set_by_id_ex(
   /* Some contexts use the current space type (image editor for e.g.),
    * ensure this is set correctly or there is no area. */
 #ifndef NDEBUG
-  {
+  /* Exclude this check for some space types where the space type isn't used. */
+  if ((1 << tkey->space_type) & WM_TOOLSYSTEM_SPACE_MASK_MODE_FROM_SPACE) {
     ScrArea *area = CTX_wm_area(C);
     BLI_assert(area == NULL || area->spacetype == tkey->space_type);
   }



More information about the Bf-blender-cvs mailing list