Bugfix #21896: Adding an modifier to a NLA strip adds it to all NLA strips
authorJoshua Leung <aligorith@gmail.com>
Sat, 3 Apr 2010 11:19:17 +0000 (11:19 +0000)
committerJoshua Leung <aligorith@gmail.com>
Sat, 3 Apr 2010 11:19:17 +0000 (11:19 +0000)
When adding modifiers to a NLA strips vs adding to the active NLA strip only, was missing a check that strips were selected first.

source/blender/editors/space_nla/nla_edit.c

index eeb8fc5e6961a6d0dec0aee0a2060e74100f80b2..3319c36e92b32d40ab9e78e36afa8b8fabbae27f 100644 (file)
@@ -1600,12 +1600,19 @@ static int nla_fmodifier_add_exec(bContext *C, wmOperator *op)
        for (ale= anim_data.first; ale; ale= ale->next) {
                NlaTrack *nlt= (NlaTrack *)ale->data;
                NlaStrip *strip;
        for (ale= anim_data.first; ale; ale= ale->next) {
                NlaTrack *nlt= (NlaTrack *)ale->data;
                NlaStrip *strip;
-               int i = 1;
                
                
-               for (strip= nlt->strips.first; strip; strip=strip->next, i++) {
-                       /* only add F-Modifier if on active strip? */
-                       if ((onlyActive) && (strip->flag & NLASTRIP_FLAG_ACTIVE)==0)
-                               continue;
+               for (strip= nlt->strips.first; strip; strip=strip->next) {
+                       /* can F-Modifier be added to the current strip? */
+                       if (onlyActive) {
+                               /* if not active, cannot add since we're only adding to active strip */
+                               if ((strip->flag & NLASTRIP_FLAG_ACTIVE)==0)
+                                       continue;
+                       }
+                       else {
+                               /* strip must be selected, since we're not just doing active */
+                               if ((strip->flag & NLASTRIP_FLAG_SELECT)==0)
+                                       continue;
+                       }
                        
                        /* add F-Modifier of specified type to selected, and make it the active one */
                        fcm= add_fmodifier(&strip->modifiers, type);
                        
                        /* add F-Modifier of specified type to selected, and make it the active one */
                        fcm= add_fmodifier(&strip->modifiers, type);
@@ -1613,10 +1620,9 @@ static int nla_fmodifier_add_exec(bContext *C, wmOperator *op)
                        if (fcm)
                                set_active_fmodifier(&strip->modifiers, fcm);
                        else {
                        if (fcm)
                                set_active_fmodifier(&strip->modifiers, fcm);
                        else {
-                               char errormsg[128];
-                               sprintf(errormsg, "Modifier couldn't be added to (%s : %d). See console for details.", nlt->name, i);
-                               
-                               BKE_report(op->reports, RPT_ERROR, errormsg);
+                               BKE_reportf(op->reports, RPT_ERROR,
+                                       "Modifier couldn't be added to (%s : %s). See console for details.", 
+                                       nlt->name, strip->name);
                        }
                }
        }
                        }
                }
        }