diff --git a/source/blender/src/editnla.c b/source/blender/src/editnla.c index 179ea41d5ad..3127f0e5072 100644 --- a/source/blender/src/editnla.c +++ b/source/blender/src/editnla.c @@ -927,7 +927,11 @@ void deselect_nlachannel_keys (int test) /* Determine if this is selection or deselection */ if (test){ - for (base=G.scene->base.first; base && sel; base=base->next){ + for (base=G.scene->base.first; base && sel; base=base->next){ + /* only consider if visible */ + if (nla_filter(base) == 0) + continue; + /* Test object ipos */ if (is_ipo_key_selected(base->object->ipo)){ sel = 0; @@ -986,7 +990,11 @@ void deselect_nlachannel_keys (int test) /* Set the flags */ - for (base=G.scene->base.first; base; base=base->next){ + for (base=G.scene->base.first; base; base=base->next){ + /* only consider if visible */ + if (nla_filter(base) == 0) + continue; + /* Set the object ipos */ set_ipo_key_selection(base->object->ipo, sel); @@ -1068,6 +1076,10 @@ void delete_nlachannel_keys(void) bActionStrip *strip, *nextstrip; for (base = G.scene->base.first; base; base=base->next){ + /* only consider if visible */ + if (nla_filter(base) == 0) + continue; + /* Delete object ipos */ delete_ipo_keys(base->object->ipo); @@ -1122,7 +1134,11 @@ void duplicate_nlachannel_keys(void) bActionStrip *strip, *laststrip; /* Find selected items */ - for (base = G.scene->base.first; base; base=base->next){ + for (base = G.scene->base.first; base; base=base->next){ + /* only consider if visible */ + if (nla_filter(base) == 0) + continue; + /* Duplicate object keys */ duplicate_ipo_keys(base->object->ipo); diff --git a/source/blender/src/transform_conversions.c b/source/blender/src/transform_conversions.c index 76f315cde04..2eab0bc9730 100644 --- a/source/blender/src/transform_conversions.c +++ b/source/blender/src/transform_conversions.c @@ -120,6 +120,7 @@ #include "BSE_view.h" #include "BSE_drawipo.h" +#include "BSE_drawnla.h" // nla_filter() #include "BSE_edit.h" #include "BSE_editipo.h" #include "BSE_editipo_types.h" @@ -3132,6 +3133,10 @@ static void createTransNlaData(TransInfo *t) /* Ensure that partial selections result in beztriple selections */ for (base=G.scene->base.first; base; base=base->next) { + /* only consider if visible */ + if (nla_filter(base) == 0) + continue; + /* Check object ipos */ i= count_ipo_keys(base->object->ipo, side, (float)CFRA); if (i) base->flag |= BA_HAS_RECALC_OB; @@ -3197,6 +3202,10 @@ static void createTransNlaData(TransInfo *t) /* build the transdata structure */ td= t->data; for (base=G.scene->base.first; base; base=base->next) { + /* only consider if visible */ + if (nla_filter(base) == 0) + continue; + /* Manipulate object ipos */ /* - no scaling of keyframe times is allowed here */ td= IpoToTransData(td, base->object->ipo, NULL, side, (float)CFRA);