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:
authorJoshua Leung <aligorith@gmail.com>2014-04-24 06:26:53 +0400
committerJoshua Leung <aligorith@gmail.com>2014-04-24 06:29:10 +0400
commit1fabfc9ea2c7b36f0827269fcf07d162a879a227 (patch)
tree84f3bf68bee9ad2bea375b06fb43d3b4a452a2bf /source/blender/editors/space_action/space_action.c
parent8cee587bcb44b24cc17a9d6527a63d19dade4e5d (diff)
Fix T39851: F-curve noise modifier on a bone: change selection when modifying value
When the dopesheet was open, "keyframe edited" events from the graph editor (i.e. fired whenever any properties on keyframes or FModifiers are changed) would trigger the dopesheet to synchronise selection states of anim channels and ensure that FCurve autocolours are initialised correctly. This however was undesired when editing properties in the graph editor. Now, made it so that keyframe adding/removing operators use different notifier flags to specify that the channels might have changed + need colour syncing, and adjusted the dopesheet updating logic to fit
Diffstat (limited to 'source/blender/editors/space_action/space_action.c')
-rw-r--r--source/blender/editors/space_action/space_action.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c
index edbe17065f1..f9f5b0c4919 100644
--- a/source/blender/editors/space_action/space_action.c
+++ b/source/blender/editors/space_action/space_action.c
@@ -374,11 +374,20 @@ static void action_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
saction->flag |= SACTION_TEMP_NEEDCHANSYNC;
ED_area_tag_refresh(sa);
}
- /* for selection changes of animation data, we can just redraw... otherwise autocolor might need to be done again */
- else if (ELEM(wmn->data, ND_KEYFRAME, ND_ANIMCHAN) && (wmn->action == NA_SELECTED))
- ED_area_tag_redraw(sa);
- else
+ /* autocolor only really needs to change when channels are added/removed, or previously hidden stuff appears
+ * (assume for now that if just adding these works, that will be fine)
+ */
+ else if (((wmn->data == ND_KEYFRAME) && ELEM(wmn->action, NA_ADDED, NA_REMOVED)) ||
+ ((wmn->data == ND_ANIMCHAN) && (wmn->action != NA_SELECTED)))
+ {
ED_area_tag_refresh(sa);
+ }
+ /* for simple edits to the curve data though (or just plain selections), a simple redraw should work
+ * (see T39851 for an example of how this can go wrong)
+ */
+ else {
+ ED_area_tag_redraw(sa);
+ }
break;
case NC_SCENE:
switch (wmn->data) {
@@ -469,7 +478,7 @@ static void action_header_area_listener(bScreen *UNUSED(sc), ScrArea *sa, ARegio
case NC_ANIMATION:
switch (wmn->data) {
case ND_KEYFRAME:
- saction->flag |= SACTION_TEMP_NEEDCHANSYNC;
+ //saction->flag |= SACTION_TEMP_NEEDCHANSYNC;
ED_region_tag_redraw(ar);
break;
}