diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-02-25 16:09:39 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-02-25 16:17:43 +0300 |
commit | ae581f9445a2bb9980a5aeb205d591b642562fa4 (patch) | |
tree | 43dd50b98e158b4a69d1956aac1dc7bea04f1aa2 /source/blender/editors/space_outliner | |
parent | cccdd6626db9e8a1a4c1ecfffc7eefccb4e2c68b (diff) |
Fix T85976: Outliner crash deleting collection with multiple windows
Diffstat (limited to 'source/blender/editors/space_outliner')
-rw-r--r-- | source/blender/editors/space_outliner/space_outliner.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 5fde6e381e0..419713035b6 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -395,7 +395,7 @@ static SpaceLink *outliner_duplicate(SpaceLink *sl) return (SpaceLink *)space_outliner_new; } -static void outliner_id_remap(ScrArea *UNUSED(area), SpaceLink *slink, ID *old_id, ID *new_id) +static void outliner_id_remap(ScrArea *area, SpaceLink *slink, ID *old_id, ID *new_id) { SpaceOutliner *space_outliner = (SpaceOutliner *)slink; @@ -427,6 +427,13 @@ static void outliner_id_remap(ScrArea *UNUSED(area), SpaceLink *slink, ID *old_i /* rebuild hash table, because it depends on ids too */ /* postpone a full rebuild because this can be called many times on-free */ space_outliner->storeflag |= SO_TREESTORE_REBUILD; + + if (new_id == NULL) { + /* Redraw is needed when removing data for multiple outlines show the same data. + * without this, the stale data won't get fully flushed when this outliner + * is not the active outliner the user is interacting with. See T85976. */ + ED_area_tag_redraw(area); + } } } } |