[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37730] branches/soc-2011-pepper/source/ blender/editors: Bugfix [#21276] The Tab key is not working in the Graph Editor when

Joshua Leung aligorith at gmail.com
Wed Jun 22 14:54:26 CEST 2011


Revision: 37730
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37730
Author:   aligorith
Date:     2011-06-22 12:54:26 +0000 (Wed, 22 Jun 2011)
Log Message:
-----------
Bugfix [#21276] The Tab key is not working in the Graph Editor when
the list of animated curves is closed

At long last, this old bludger can be put out to pasture. I figured it
would involve some of the visibility-filtering stuff I added, but this
required a bit extra effort than anticipated.

Modified Paths:
--------------
    branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_edit.c
    branches/soc-2011-pepper/source/blender/editors/animation/anim_filter.c
    branches/soc-2011-pepper/source/blender/editors/include/ED_anim_api.h

Modified: branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_edit.c
===================================================================
--- branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_edit.c	2011-06-22 12:05:24 UTC (rev 37729)
+++ branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_edit.c	2011-06-22 12:54:26 UTC (rev 37730)
@@ -1428,9 +1428,14 @@
 	 * - but for Graph Editor, this gets used also from main region
 	 *   where hierarchy doesn't apply [#21276]
 	 */
-	// FIXME: graph editor case
-	// XXX: noduplis enabled so that results don't cancel, but will be problematic for some channels where only type differs
-	filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_LIST_CHANNELS | ANIMFILTER_NODUPLIS);
+	if ((ac->spacetype == SPACE_IPO) && (ac->regiontype != RGN_TYPE_CHANNELS)) {
+		/* graph editor (case 2) */
+		filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_CHANNELS | ANIMFILTER_CURVE_VISIBLE | ANIMFILTER_NODUPLIS);
+	}
+	else {
+		/* standard case */
+		filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_LIST_CHANNELS | ANIMFILTER_NODUPLIS);
+	}
 	if (onlysel) filter |= ANIMFILTER_SEL;
 	ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
 	

Modified: branches/soc-2011-pepper/source/blender/editors/animation/anim_filter.c
===================================================================
--- branches/soc-2011-pepper/source/blender/editors/animation/anim_filter.c	2011-06-22 12:05:24 UTC (rev 37729)
+++ branches/soc-2011-pepper/source/blender/editors/animation/anim_filter.c	2011-06-22 12:54:26 UTC (rev 37730)
@@ -964,10 +964,13 @@
 		filter_gmode= filter_mode;
 		
 		/* if we care about the selection status of the channels, 
-		 * but the group isn't expanded...
+		 * but the group isn't expanded (1)...
+		 * 	(1) this only matters if we actually care about the hierarchy though,
+		 *      so if we're not filtering for that, then we shouldn't care, otherwise
+		 *      cases like [#21276] won't work properly
 		 */
-		if ( (filter_mode & (ANIMFILTER_SEL|ANIMFILTER_UNSEL)) &&	/* care about selection status */
-			 (EXPANDED_AGRP(ac, agrp)==0) )								/* group isn't expanded */
+		if ( ((filter_mode & ANIMFILTER_LIST_VISIBLE) && EXPANDED_AGRP(ac, agrp)==0) && 	/* care about hierarchy but group isn't expanded */
+			  (filter_mode & (ANIMFILTER_SEL|ANIMFILTER_UNSEL)) ) 							/* care about selection status */	 
 		{
 			/* if the group itself isn't selected appropriately, we shouldn't consider it's children either */
 			if (ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) == 0)

Modified: branches/soc-2011-pepper/source/blender/editors/include/ED_anim_api.h
===================================================================
--- branches/soc-2011-pepper/source/blender/editors/include/ED_anim_api.h	2011-06-22 12:05:24 UTC (rev 37729)
+++ branches/soc-2011-pepper/source/blender/editors/include/ED_anim_api.h	2011-06-22 12:54:26 UTC (rev 37730)
@@ -183,25 +183,6 @@
 
 /* ----------------- Filtering -------------------- */
 
-#if 0 /// old
-/* filtering flags  - under what circumstances should a channel be added */
-typedef enum eAnimFilter_Flags {
-	ANIMFILTER_VISIBLE		= (1<<0),	/* should channels be visible (in terms of hierarchy only) */
-	//ANIMFILTER_SEL			= (1<<1),	/* should channels be selected */
-	//ANIMFILTER_UNSEL		= (1<<2),	/* should channels be NOT selected */
-	//ANIMFILTER_FOREDIT		= (1<<3),	/* does editable status matter */
-	ANIMFILTER_CURVESONLY	= (1<<4),	/* don't include summary-channels, etc. */ // double-check on how this goes for actedit
-	ANIMFILTER_CHANNELS		= (1<<5),	/* make list for interface drawing */
-	//ANIMFILTER_ACTGROUPED	= (1<<6),	/* belongs to the active actiongroup */
-	ANIMFILTER_CURVEVISIBLE	= (1<<7),	/* F-Curve is visible for editing/viewing in Graph Editor */
-	//ANIMFILTER_ACTIVE		= (1<<8),	/* channel should be 'active' */
-	//ANIMFILTER_ANIMDATA		= (1<<9),	/* only return the underlying AnimData blocks (not the tracks, etc.) data comes from */
-	ANIMFILTER_NLATRACKS	= (1<<10),	/* only include NLA-tracks */
-	//ANIMFILTER_SELEDIT		= (1<<11),	/* link editability with selected status */
-	//ANIMFILTER_NODUPLIS		= (1<<12),	/* duplicate entries for animation data attached to multi-user blocks must not occur */
-} eAnimFilter_Flags;
-#endif
-
 /* filtering flags  - under what circumstances should a channel be returned */
 // TODO: flag to just test if there's any channel inside worthy of being added - return 1 as soon as this is encountered, but don't add
 typedef enum eAnimFilter_Flags {




More information about the Bf-blender-cvs mailing list