[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55233] trunk/blender/source/blender/ editors/space_outliner/outliner_select.c: Outliner fix: selecting a bone did not unselect other bones when they are located in a hidden layer

Gaia Clary gaia.clary at machinimatrix.org
Wed Mar 13 13:52:44 CET 2013


Revision: 55233
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55233
Author:   gaiaclary
Date:     2013-03-13 12:52:44 +0000 (Wed, 13 Mar 2013)
Log Message:
-----------
Outliner fix: selecting a bone did not unselect other bones when they are located in a hidden layer

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_outliner/outliner_select.c

Modified: trunk/blender/source/blender/editors/space_outliner/outliner_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_outliner/outliner_select.c	2013-03-13 12:24:10 UTC (rev 55232)
+++ trunk/blender/source/blender/editors/space_outliner/outliner_select.c	2013-03-13 12:52:44 UTC (rev 55233)
@@ -460,9 +460,13 @@
 	if (set) {
 		if (!(pchan->bone->flag & BONE_HIDDEN_P)) {
 			
-			if (set == 2) ED_pose_deselectall(ob, 2);  // 2 = clear active tag
-			else ED_pose_deselectall(ob, 0);    // 0 = deselect
-			
+			if (set != 2) {
+				bPoseChannel *pchannel;
+				/* single select forces all other bones to get unselected */
+				for (pchannel = ob->pose->chanbase.first; pchannel; pchannel = pchannel->next)
+					pchannel->bone->flag &= ~(BONE_TIPSEL | BONE_SELECTED | BONE_ROOTSEL);
+			}
+
 			if (set == 2 && (pchan->bone->flag & BONE_SELECTED)) {
 				pchan->bone->flag &= ~BONE_SELECTED;
 			}
@@ -497,8 +501,12 @@
 		if (!(bone->flag & BONE_HIDDEN_P)) {
 			Object *ob = OBACT;
 			if (ob) {
-				if (set == 2) ED_pose_deselectall(ob, 2);  // 2 is clear active tag
-				else ED_pose_deselectall(ob, 0);
+				if (set != 2) {
+					bPoseChannel *pchannel;
+					/* single select forces all other bones to get unselected */
+					for (pchannel = ob->pose->chanbase.first; pchannel; pchannel = pchannel->next)
+						pchannel->bone->flag &= ~(BONE_TIPSEL | BONE_SELECTED | BONE_ROOTSEL);
+				}
 			}
 			
 			if (set == 2 && (bone->flag & BONE_SELECTED)) {




More information about the Bf-blender-cvs mailing list