Blender Git Commit Log
Git Commits -> Revision b4530de
Revision b4530de by Philipp Oeser (master) January 18, 2021, 12:58 (GMT) |
Fix T84586: missing Outliner redraws for certain NLA operators Outliner display under 'Animation' > 'NLA Tracks' was not updating in the following cases: - adding strips - removing strips - duplicating strips (possibly to different track) - swapping strips - reordering tracks - changing strip order by translating - translating strips between tracks - renaming tracks In the case of deleting strips/tracks, this was also resulting in a use- after-free error in Outliner drawing code (this was reported specifically in T84586). Most of these operators already sent a ND_NLA|NA_EDITED notifier, but the Outliner is not listening to these. Listening to NA_EDITED is also not what we want since this also happens a lot in cases irrelevant to the Outliner. Now be a bit more specific and send ND_NLA|NA_ADDED / ND_NLA| NA_REMOVED or a new ND_NLA_ORDER (to distinguish from NA_EDITED 'only' - where a redraw is not neccessary) and listen to these from the Outliner. (note: places that were listening to ND_NLA|NA_EDITED before are also listening to NA_ADDED or NA_REMOVED, so changing NA_EDITED should not be a problem here) (note 2: for cases like swapping tracks/strips order, NA_ADDED or NA_REMOVED does not make sense, neither can we use NA_EDITED [since we dont want to listen to this], so in this case an additional ND_NLA_ORDER is now sent) (note 3: in nla transform code, this is now always sent on confirm. There are cases were the notifier would not be needed, but checking exactly all cases were it actually would be needed seems overkill [history of D10073 has example code to check if strips moved between tracks]) Maniphest Tasks: T84586 Differential Revision: https://developer.blender.org/D10073 |
Commit Details:
Full Hash: b4530deec478e1982156a2a76bd4bdadaf651fb3
Parent Commit: dfdf79f
Lines Changed: +41, -13
7 Modified Paths:
/source/blender/editors/animation/anim_channels_edit.c (+2, -0) (Diff)
/source/blender/editors/object/object_add.c (+1, -1) (Diff)
/source/blender/editors/space_nla/nla_channels.c (+2, -2) (Diff)
/source/blender/editors/space_nla/nla_edit.c (+19, -9) (Diff)
/source/blender/editors/space_outliner/space_outliner.c (+9, -1) (Diff)
/source/blender/editors/transform/transform_convert_nla.c (+7, -0) (Diff)
/source/blender/windowmanager/WM_types.h (+1, -0) (Diff)
/source/blender/editors/object/object_add.c (+1, -1) (Diff)
/source/blender/editors/space_nla/nla_channels.c (+2, -2) (Diff)
/source/blender/editors/space_nla/nla_edit.c (+19, -9) (Diff)
/source/blender/editors/space_outliner/space_outliner.c (+9, -1) (Diff)
/source/blender/editors/transform/transform_convert_nla.c (+7, -0) (Diff)
/source/blender/windowmanager/WM_types.h (+1, -0) (Diff)