Revision: 22492
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22492
Author:   aligorith
Date:     2009-08-16 04:43:06 +0200 (Sun, 16 Aug 2009)

Log Message:
-----------
Animation Editors: Visibility Toggles for Datablocks now work

Modified Paths:
--------------
    
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
    branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c

Modified: 
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
        2009-08-16 02:35:44 UTC (rev 22491)
+++ 
branches/blender2.5/blender/source/blender/editors/animation/anim_channels_defines.c
        2009-08-16 02:43:06 UTC (rev 22492)
@@ -1903,10 +1903,6 @@
        else
                selected= 0;
        
-       /* enable correct blending mode for icons to work... */
-       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-       glEnable(GL_BLEND);
-       
        /* step 1) draw backdrop ...........................................  */
        if (acf->draw_backdrop)
                acf->draw_backdrop(ac, ale, yminc, ymaxc);
@@ -1954,8 +1950,6 @@
                }
        }
        
-       glDisable(GL_BLEND); /* End of blending with background (text now gets 
drawn) */
-       
        /* step 5) draw name ............................................... */
        if (acf->name) {
                char name[256]; /* hopefully this will be enough! */
@@ -1981,10 +1975,6 @@
        // TODO: when drawing sliders, make those draw instead of these toggles 
if not enough space
        
        if (v2d) {
-               /* set blending again, as text drawing may clear it */
-               glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-               glEnable(GL_BLEND);
-               
                /* protect... */
                if (acf->has_setting(ac, ale, ACHANNEL_SETTING_PROTECT)) {
                        /* just skip - drawn as widget now */
@@ -1995,8 +1985,6 @@
                        /* just skip - drawn as widget now */
                        offset += ICON_WIDTH;
                }
-               
-               glDisable(GL_BLEND); /* End of blending with background */
        }
 }
 
@@ -2058,7 +2046,11 @@
                case ACHANNEL_SETTING_MUTE: /* muted eye */
                        //icon= ((enabled)? ICON_MUTE_IPO_ON : 
ICON_MUTE_IPO_OFF);
                        icon= ICON_MUTE_IPO_OFF;
-                       tooltip= "Do channel(s) contribute to result."; // XXX
+                       
+                       if (ale->type == ALE_FCURVE) 
+                               tooltip= "Does F-Curve contribute to result.";
+                       else
+                               tooltip= "Do channels contribute to result.";
                        break;
                        
                default:

Modified: 
branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c  
2009-08-16 02:35:44 UTC (rev 22491)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c  
2009-08-16 02:43:06 UTC (rev 22492)
@@ -374,29 +374,31 @@
  */
 #define ANIMDATA_FILTER_CASES(id, adtOk, nlaOk, driversOk, keysOk) \
        {\
-               if (filter_mode & ANIMFILTER_ANIMDATA) {\
-                       if ((id)->adt) {\
-                               adtOk\
+               if ((id)->adt) {\
+                       if (!(filter_mode & ANIMFILTER_CURVEVISIBLE) || 
!((id)->adt->flag & ADT_CURVES_NOT_VISIBLE)) {\
+                               if (filter_mode & ANIMFILTER_ANIMDATA) {\
+                                       adtOk\
+                               }\
+                               else if (ads->filterflag & ADS_FILTER_ONLYNLA) 
{\
+                                       if (ANIMDATA_HAS_NLA(id)) {\
+                                               nlaOk\
+                                       }\
+                                       else if (!(ads->filterflag & 
ADS_FILTER_NLA_NOACT) && ANIMDATA_HAS_KEYS(id)) {\
+                                               nlaOk\
+                                       }\
+                               }\
+                               else if (ads->filterflag & 
ADS_FILTER_ONLYDRIVERS) {\
+                                       if (ANIMDATA_HAS_DRIVERS(id)) {\
+                                               driversOk\
+                                       }\
+                               }\
+                               else {\
+                                       if (ANIMDATA_HAS_KEYS(id)) {\
+                                               keysOk\
+                                       }\
+                               }\
                        }\
                }\
-               else if (ads->filterflag & ADS_FILTER_ONLYNLA) {\
-                       if (ANIMDATA_HAS_NLA(id)) {\
-                               nlaOk\
-                       }\
-                       else if (!(ads->filterflag & ADS_FILTER_NLA_NOACT) && 
ANIMDATA_HAS_KEYS(id)) {\
-                               nlaOk\
-                       }\
-               }\
-               else if (ads->filterflag & ADS_FILTER_ONLYDRIVERS) {\
-                       if (ANIMDATA_HAS_DRIVERS(id)) {\
-                               driversOk\
-                       }\
-               }\
-               else {\
-                       if (ANIMDATA_HAS_KEYS(id)) {\
-                               keysOk\
-                       }\
-               }\
        }
 
 
@@ -1465,6 +1467,14 @@
                                worOk= !(ads->filterflag & ADS_FILTER_NOWOR);)
                }
                
+               /* if only F-Curves with visible flags set can be shown, check 
that 
+                * datablocks haven't been set to invisible 
+                */
+               if (filter_mode & ANIMFILTER_CURVEVISIBLE) {
+                       if ((sce->adt) && (sce->adt->flag & 
ADT_CURVES_NOT_VISIBLE))
+                               sceOk= worOk= 0;
+               }
+               
                /* check if not all bad (i.e. so there is something to show) */
                if ( !(!sceOk && !worOk) ) {
                        /* add scene data to the list of filtered channels */
@@ -1481,7 +1491,7 @@
                        Key *key= ob_get_key(ob);
                        short actOk=1, keyOk=1, dataOk=1, matOk=1, partOk=1;
                        
-                       /* firstly, check if object can be included, by the 
following fanimors:
+                       /* firstly, check if object can be included, by the 
following factors:
                         *      - if only visible, must check for layer and 
also viewport visibility
                         *      - if only selected, must check if object is 
selected 
                         *      - there must be animation data to edit
@@ -1495,6 +1505,14 @@
                                if (ob->restrictflag & OB_RESTRICT_VIEW) 
continue;
                        }
                        
+                       /* if only F-Curves with visible flags set can be 
shown, check that 
+                        * datablock hasn't been set to invisible 
+                        */
+                       if (filter_mode & ANIMFILTER_CURVEVISIBLE) {
+                               if ((ob->adt) && (ob->adt->flag & 
ADT_CURVES_NOT_VISIBLE))
+                                       continue;
+                       }
+                       
                        /* additionally, dopesheet filtering also affects what 
objects to consider */
                        if (ads->filterflag) {
                                /* check selection and object type filters */


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to