[Bf-blender-cvs] [6f99699] master: Previous commit uncovered another bug - Ungrouped FCurves couldn't be rearranged still

Joshua Leung noreply at git.blender.org
Thu May 22 05:47:51 CEST 2014


Commit: 6f99699d7d5a362e669b86cee6487e1397b017ba
Author: Joshua Leung
Date:   Thu May 22 15:37:32 2014 +1200
https://developer.blender.org/rB6f99699d7d5a362e669b86cee6487e1397b017ba

Previous commit uncovered another bug - Ungrouped FCurves couldn't be rearranged still

This was because to the filtering code, those FCurves still weren't in any
groups, and so couldn't be visible (since a temporary group is created to
house them). As a result, the visible-channels list would be empty, causing
all hidden FCurves to be treated as hidden.

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

M	source/blender/editors/animation/anim_channels_edit.c

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

diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c
index eab78f1..a7e7cb2 100644
--- a/source/blender/editors/animation/anim_channels_edit.c
+++ b/source/blender/editors/animation/anim_channels_edit.c
@@ -891,8 +891,9 @@ static void rearrange_animchannels_filter_visible(ListBase *anim_data_visible, b
 	for (ale = anim_data.first; ale; ale = ale_next) {
 		ale_next = ale->next;
 		
-		if (ale->type != type)
+		if (ale->type != type) {
 			BLI_freelinkN(&anim_data, ale);
+		}
 	}
 	
 	/* return cleaned up list */
@@ -1045,6 +1046,13 @@ static void split_groups_action_temp(bAction *act, bActionGroup *tgrp)
 		fcu->next = NULL;
 		tgrp->channels.last = fcu;
 		act->curves.last = NULL;
+		
+		/* ensure that all of these get their group set to this temp group 
+		 * (so that visibility filtering works)
+		 */
+		for (fcu = tgrp->channels.first; fcu; fcu = fcu->next) {
+			fcu->grp = tgrp;
+		}
 	}
 	
 	/* Add temp-group to list */
@@ -1067,8 +1075,17 @@ static void join_groups_action_temp(bAction *act)
 		/* clear moved flag */
 		agrp->flag &= ~AGRP_MOVED;
 		
-		/* if temp-group... remove from list (but don't free as it's on the stack!) */
+		/* if group was temporary one:
+		 * - unassign all FCurves which were temporarily added to it
+		 * - remove from list (but don't free as it's on the stack!)
+		 */
 		if (agrp->flag & AGRP_TEMP) {
+			FCurve *fcu;
+			
+			for (fcu = agrp->channels.first; fcu; fcu = fcu->next) {
+				fcu->grp = NULL;
+			}
+			
 			BLI_remlink(&act->groups, agrp);
 			break;
 		}




More information about the Bf-blender-cvs mailing list