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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-12-10 04:30:41 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-12-10 04:30:41 +0300
commit642c315bae13ccb418ec767e6f29ca4e450dde5d (patch)
treea292b4dc52673e689166a67e763bfdf2e9994482 /source
parent9df2b6da3a718323dbe9431c5a4b43fc309fa4b9 (diff)
Fix T53544: Undo in pose mode selects all fcurves
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenloader/intern/readfile.c2
-rw-r--r--source/blender/editors/space_graph/space_graph.c11
-rw-r--r--source/blender/makesdna/DNA_space_types.h2
3 files changed, 13 insertions, 2 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index ddbe855d03e..8d89620cdec 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6859,7 +6859,7 @@ void blo_lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *cursc
/* force recalc of list of channels (i.e. includes calculating F-Curve colors)
* thus preventing the "black curves" problem post-undo
*/
- sipo->runtime.flag |= SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC;
+ sipo->runtime.flag |= SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC_COLOR;
}
else if (sl->spacetype == SPACE_BUTS) {
SpaceButs *sbuts = (SpaceButs *)sl;
diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c
index fead6efa2b5..3b476ff3645 100644
--- a/source/blender/editors/space_graph/space_graph.c
+++ b/source/blender/editors/space_graph/space_graph.c
@@ -513,7 +513,7 @@ static void graph_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
ED_area_tag_redraw(sa);
break;
case NC_WINDOW:
- if (sipo->runtime.flag & SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC) {
+ if (sipo->runtime.flag & (SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC | SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC_COLOR)) {
/* force redraw/refresh after undo/redo - prevents "black curve" problem */
ED_area_tag_refresh(sa);
}
@@ -676,6 +676,15 @@ static void graph_refresh(const bContext *C, ScrArea *sa)
ED_area_tag_redraw(sa);
}
+ /* We could check 'SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC_COLOR', but color is recalculated anyway. */
+ if (sipo->runtime.flag & SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC_COLOR) {
+ sipo->runtime.flag &= ~SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC_COLOR;
+#if 0 /* Done below. */
+ graph_refresh_fcurve_colors(C);
+#endif
+ ED_area_tag_redraw(sa);
+ }
+
/* init/adjust F-Curve colors */
graph_refresh_fcurve_colors(C);
}
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 029f7a6fca9..d85b9626735 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -407,6 +407,8 @@ typedef enum eGraphEdit_Mode {
typedef enum eGraphEdit_Runtime_Flag {
/** Temporary flag to force channel selections to be synced with main. */
SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC = (1 << 0),
+ /** Temporary flag to force fcurves to recalculate colors. */
+ SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC_COLOR = (1 << 1),
} eGraphEdit_Runtime_Flag;
/** \} */