[Bf-blender-cvs] [80816fc7123] blender2.8: Fix T58256: error message w/ missing Select Box tool

Campbell Barton noreply at git.blender.org
Tue Dec 4 03:56:24 CET 2018


Commit: 80816fc71235c07c8a0ae74d015116e852459114
Author: Campbell Barton
Date:   Tue Dec 4 13:34:11 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB80816fc71235c07c8a0ae74d015116e852459114

Fix T58256: error message w/ missing Select Box tool

Support space modes not having tools.

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

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 4318179c203..23f9161025e 100644
--- a/source/blender/windowmanager/WM_toolsystem.h
+++ b/source/blender/windowmanager/WM_toolsystem.h
@@ -82,6 +82,9 @@ void WM_toolsystem_ref_sync_from_context(
 
 void WM_toolsystem_init(struct bContext *C);
 
+int WM_toolsystem_mode_from_spacetype_ex(
+        struct ViewLayer *view_layer, struct ScrArea *sa, int space_type,
+        bool *r_ensure);
 int WM_toolsystem_mode_from_spacetype(
         struct ViewLayer *view_layer, struct ScrArea *sa, int space_type);
 bool WM_toolsystem_key_from_context(
diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c
index 3b91b351b25..f070ac59e8f 100644
--- a/source/blender/windowmanager/intern/wm_toolsystem.c
+++ b/source/blender/windowmanager/intern/wm_toolsystem.c
@@ -559,10 +559,12 @@ void WM_toolsystem_init(bContext *C)
 	/* Rely on screen initialization for gizmos. */
 }
 
-int WM_toolsystem_mode_from_spacetype(
-        ViewLayer *view_layer, ScrArea *sa, int spacetype)
+int WM_toolsystem_mode_from_spacetype_ex(
+        ViewLayer *view_layer, ScrArea *sa, int spacetype,
+        bool *r_ensure)
 {
 	int mode = -1;
+	bool ensure = false;
 	switch (spacetype) {
 		case SPACE_VIEW3D:
 		{
@@ -575,23 +577,39 @@ int WM_toolsystem_mode_from_spacetype(
 			else {
 				mode = CTX_MODE_OBJECT;
 			}
+			ensure = true;
 			break;
 		}
 		case SPACE_IMAGE:
 		{
 			SpaceImage *sima = sa->spacedata.first;
 			mode = sima->mode;
+			if (ELEM(mode, SI_MODE_PAINT, SI_MODE_UV)) {
+				ensure = true;
+			}
 			break;
 		}
 		case SPACE_NODE:
 		{
 			mode = 0;
+			ensure = true;
 			break;
 		}
 	}
+	if (r_ensure) {
+		*r_ensure = ensure;
+	}
 	return mode;
 }
 
+int WM_toolsystem_mode_from_spacetype(
+        ViewLayer *view_layer, ScrArea *sa, int spacetype)
+{
+	return WM_toolsystem_mode_from_spacetype_ex(
+	        view_layer, sa, spacetype,
+	        NULL);
+}
+
 bool WM_toolsystem_key_from_context(
         ViewLayer *view_layer, ScrArea *sa, bToolKey *tkey)
 {
@@ -787,6 +805,12 @@ static const char *toolsystem_default_tool(const bToolKey *tkey)
 					return "Comb";
 			}
 			break;
+		case SPACE_IMAGE:
+			switch (tkey->mode) {
+				case SI_MODE_PAINT:
+					return "Draw";
+			}
+			break;
 	}
 
 	return "Select Box";
@@ -825,11 +849,14 @@ void WM_toolsystem_update_from_context(
         bContext *C, WorkSpace *workspace, ViewLayer *view_layer,
         ScrArea *sa)
 {
+	bool ensure = false;
 	const bToolKey tkey = {
 		.space_type = sa->spacetype,
-		.mode = WM_toolsystem_mode_from_spacetype(view_layer, sa, sa->spacetype),
+		.mode = WM_toolsystem_mode_from_spacetype_ex(view_layer, sa, sa->spacetype, &ensure),
 	};
-	toolsystem_reinit_ensure_toolref(C, workspace, &tkey, NULL);
+	if (ensure) {
+		toolsystem_reinit_ensure_toolref(C, workspace, &tkey, NULL);
+	}
 }



More information about the Bf-blender-cvs mailing list