Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/editors/space_action/action_data.c32
1 files changed, 27 insertions, 5 deletions
diff --git a/source/blender/editors/space_action/action_data.c b/source/blender/editors/space_action/action_data.c
index 52c8729fc8a..e141789d7a9 100644
--- a/source/blender/editors/space_action/action_data.c
+++ b/source/blender/editors/space_action/action_data.c
@@ -595,6 +595,19 @@ static void action_layer_switch_strip(AnimData *adt,
nlt->flag |= NLATRACK_SOLO;
}
}
+ else {
+ /* NLA muting <==> Solo Tracks */
+ if (adt->flag & ADT_NLA_EVAL_OFF) {
+ /* disable NLA muting */
+ adt->flag &= ~ADT_NLA_EVAL_OFF;
+
+ /* mark this track as being solo */
+ adt->flag |= ADT_NLA_SOLO_TRACK;
+ nlt->flag |= NLATRACK_SOLO;
+
+ // TODO: Needs restpose flushing (when we get reference track)
+ }
+ }
/* Enter tweakmode again - hopefully we're now "it" */
BKE_nla_tweakmode_enter(adt);
@@ -670,15 +683,24 @@ static int action_layer_next_exec(bContext *C, wmOperator *op)
}
}
else {
- /* No more actions - Go back to editing the original active action
+ /* No more actions (strips) - Go back to editing the original active action
* NOTE: This will mean exiting tweakmode...
*/
BKE_nla_tweakmode_exit(adt);
- /* Deal with solo flags... */
- // XXX: if solo, turn off NLA while we edit this action?
- act_track->flag &= ~NLATRACK_SOLO;
- adt->flag &= ~ADT_NLA_SOLO_TRACK;
+ /* Deal with solo flags...
+ * Assume: Solo Track == NLA Muting
+ */
+ if (adt->flag & ADT_NLA_SOLO_TRACK) {
+ /* turn off solo flags on tracks */
+ act_track->flag &= ~NLATRACK_SOLO;
+ adt->flag &= ~ADT_NLA_SOLO_TRACK;
+
+ /* turn on NLA muting (to keep same effect) */
+ adt->flag |= ADT_NLA_EVAL_OFF;
+
+ // TODO: Needs restpose flushing (when we get reference track)
+ }
}
/* Update the action that this editor now uses