Revision: 45372
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45372
Author:   campbellbarton
Date:     2012-04-03 12:20:44 +0000 (Tue, 03 Apr 2012)
Log Message:
-----------
fix [#30340] bpy.ops.pose.select_hierarchy() doesn't work on disconnected 
parents/children

Modified Paths:
--------------
    trunk/blender/source/blender/editors/armature/poseobject.c

Modified: trunk/blender/source/blender/editors/armature/poseobject.c
===================================================================
--- trunk/blender/source/blender/editors/armature/poseobject.c  2012-04-03 
12:02:32 UTC (rev 45371)
+++ trunk/blender/source/blender/editors/armature/poseobject.c  2012-04-03 
12:20:44 UTC (rev 45372)
@@ -407,8 +407,30 @@
                                        }
                                } 
                                else { /* direction == BONE_SELECT_CHILD */
+
+                                       /* the child member is only assigned to 
connected bones, see [#30340] */
+#if 0
                                        if (pchan->child == NULL) continue;
                                        else chbone = pchan->child->bone;
+#else
+                                       /* instead. find _any_ visible child 
bone, using the first one is a little arbitrary  - campbell */
+                                       chbone = pchan->child ? 
pchan->child->bone : NULL;
+                                       if (chbone == NULL) {
+                                               bPoseChannel *pchan_child;
+
+                                               for (pchan_child = 
ob->pose->chanbase.first; pchan_child; pchan_child = pchan_child->next) {
+                                                       /* possible we have 
multiple children, some invisible */
+                                                       if (PBONE_VISIBLE(arm, 
pchan_child->bone)) {
+                                                               if 
(pchan_child->parent == pchan) {
+                                                                       chbone 
= pchan_child->bone;
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+                                       }
+
+                                       if (chbone == NULL) continue;
+#endif
                                        
                                        if (PBONE_VISIBLE(arm, chbone)) {
                                                if (!add_to_sel) curbone->flag 
&= ~BONE_SELECTED;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to