diff options
author | Julian Eisel <julian@blender.org> | 2020-10-12 19:04:52 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2020-10-12 19:21:12 +0300 |
commit | c1cee363cd39aaf25cbf4e099a07d1c4df6d37d7 (patch) | |
tree | f1d26f13c671d36202e19f7c325e922883616335 /source/blender/editors/space_outliner/space_outliner.c | |
parent | 6f0b082378133afd944cc6af2e992c5f9fb12cd3 (diff) |
Fix T81555: Outliner object state filter not updating correctly
When changing the selected, active or visible object(s), the Outliner
has to be rebuilt while using the corresponding object state filters.
The object hiding operators also have to send the proper notifiers (they
changed visibility without notifying about that).
Diffstat (limited to 'source/blender/editors/space_outliner/space_outliner.c')
-rw-r--r-- | source/blender/editors/space_outliner/space_outliner.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 2ed834a15dd..8be7f4d1bad 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -102,18 +102,25 @@ static void outliner_main_region_free(ARegion *UNUSED(region)) } static void outliner_main_region_listener(wmWindow *UNUSED(win), - ScrArea *UNUSED(area), + ScrArea *area, ARegion *region, wmNotifier *wmn, const Scene *UNUSED(scene)) { + SpaceOutliner *space_outliner = area->spacedata.first; + /* context changes */ switch (wmn->category) { case NC_SCENE: switch (wmn->data) { case ND_OB_ACTIVE: case ND_OB_SELECT: - ED_region_tag_redraw_no_rebuild(region); + if (outliner_requires_rebuild_on_select_or_active_change(space_outliner)) { + ED_region_tag_redraw(region); + } + else { + ED_region_tag_redraw_no_rebuild(region); + } break; case ND_OB_VISIBLE: case ND_OB_RENDER: |