[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50458] trunk/blender/source/blender/ editors: fix [#30063] Weight Paint + Pose Mode: [m] key does not toggle Face Selection Masking

Campbell Barton ideasman42 at gmail.com
Fri Sep 7 01:10:03 CEST 2012


Revision: 50458
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50458
Author:   campbellbarton
Date:     2012-09-06 23:10:01 +0000 (Thu, 06 Sep 2012)
Log Message:
-----------
fix [#30063] Weight Paint + Pose Mode: [m] key does not toggle Face Selection Masking

disallow some pose operators when weight paint mode is enabled.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/armature/poseobject.c
    trunk/blender/source/blender/editors/include/ED_screen.h
    trunk/blender/source/blender/editors/object/object_constraint.c
    trunk/blender/source/blender/editors/screen/screen_ops.c

Modified: trunk/blender/source/blender/editors/armature/poseobject.c
===================================================================
--- trunk/blender/source/blender/editors/armature/poseobject.c	2012-09-06 16:44:27 UTC (rev 50457)
+++ trunk/blender/source/blender/editors/armature/poseobject.c	2012-09-06 23:10:01 UTC (rev 50458)
@@ -274,7 +274,7 @@
 	/* api callbacks */
 	ot->invoke = pose_calculate_paths_invoke;
 	ot->exec = pose_calculate_paths_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -319,7 +319,7 @@
 	
 	/* api callbakcs */
 	ot->exec = pose_update_paths_exec;
-	ot->poll = ED_operator_posemode; /* TODO: this should probably check for active bone and/or existing paths */
+	ot->poll = ED_operator_posemode_exclusive; /* TODO: this should probably check for active bone and/or existing paths */
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -380,7 +380,7 @@
 	
 	/* api callbacks */
 	ot->exec = pose_clear_paths_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -2192,7 +2192,7 @@
 	/* callbacks */
 	ot->invoke = pose_bone_layers_invoke;
 	ot->exec = pose_bone_layers_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;

Modified: trunk/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_screen.h	2012-09-06 16:44:27 UTC (rev 50457)
+++ trunk/blender/source/blender/editors/include/ED_screen.h	2012-09-06 23:10:01 UTC (rev 50458)
@@ -169,6 +169,7 @@
 int     ED_operator_editmball(struct bContext *C);
 int     ED_operator_uvedit(struct bContext *C);
 int     ED_operator_uvmap(struct bContext *C);
+int     ED_operator_posemode_exclusive(struct bContext *C);
 int     ED_operator_posemode(struct bContext *C);
 int     ED_operator_mask(struct bContext *C);
 

Modified: trunk/blender/source/blender/editors/object/object_constraint.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_constraint.c	2012-09-06 16:44:27 UTC (rev 50457)
+++ trunk/blender/source/blender/editors/object/object_constraint.c	2012-09-06 23:10:01 UTC (rev 50458)
@@ -1185,7 +1185,7 @@
 	
 	/* callbacks */
 	ot->exec = pose_constraints_clear_exec;
-	ot->poll = ED_operator_posemode; // XXX - do we want to ensure there are selected bones too?
+	ot->poll = ED_operator_posemode_exclusive; // XXX - do we want to ensure there are selected bones too?
 }
 
 
@@ -1266,7 +1266,7 @@
 	
 	/* api callbacks */
 	ot->exec = pose_constraint_copy_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -1661,7 +1661,7 @@
 	/* api callbacks */
 	ot->invoke = WM_menu_invoke;
 	ot->exec = pose_constraint_add_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -1680,7 +1680,7 @@
 	/* api callbacks */
 	ot->invoke = WM_menu_invoke;
 	ot->exec = pose_constraint_add_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -1766,7 +1766,7 @@
 	/* api callbacks */
 	ot->invoke = pose_ik_add_invoke;
 	ot->exec = pose_ik_add_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -1816,7 +1816,7 @@
 	
 	/* api callbacks */
 	ot->exec = pose_ik_clear_exec;
-	ot->poll = ED_operator_posemode;
+	ot->poll = ED_operator_posemode_exclusive;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2012-09-06 16:44:27 UTC (rev 50457)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2012-09-06 23:10:01 UTC (rev 50458)
@@ -349,6 +349,29 @@
 	return 0;
 }
 
+/**
+ * \brief check for pose mode (no mixed modes)
+ *
+ * We wan't to enable most pose operations in weight paint mode,
+ * when it comes to transforming bones, but managing bomes layers/groups
+ * can be left for pose mode only. (not weight paint mode)
+ */
+int ED_operator_posemode_exclusive(bContext *C)
+{
+	Object *obact = CTX_data_active_object(C);
+
+	if (obact && !(obact->mode & OB_MODE_EDIT)) {
+		Object *obpose;
+		if ((obpose = BKE_object_pose_armature_get(obact))) {
+			if (obact == obpose) {
+				return 1;
+			}
+		}
+	}
+
+	return 0;
+}
+
 int ED_operator_posemode(bContext *C)
 {
 	Object *obact = CTX_data_active_object(C);




More information about the Bf-blender-cvs mailing list