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:
authorNathan Craddock <nzcraddock@gmail.com>2020-11-20 18:47:51 +0300
committerNathan Craddock <nzcraddock@gmail.com>2020-11-20 18:47:51 +0300
commit2afdb4ba8754d690ccad058fdbcab21f83c62b5c (patch)
treeb0a04f9e98be6cd80534fd8131b3b3466d66e620 /source/blender/editors/space_outliner/outliner_tree.c
parent96995b2343d96c75e3d03dbfaf8785fb8b28bfc5 (diff)
Outliner: Object state filter invert toggle
This adds an invert toggle for the outliner object state filters. There are some cases where we want a filter for invertable states (Selected, Unselected) and having a single toggle to invert the filter reduces the number of separate filter types needed. This removes the "Hidden" filter which can now be replicated with an inverted "Visible" filter. Differential Revision: https://developer.blender.org/D9598
Diffstat (limited to 'source/blender/editors/space_outliner/outliner_tree.c')
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 83be26793ee..159511546be 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -1913,9 +1913,6 @@ static int outliner_exclude_filter_get(const SpaceOutliner *space_outliner)
case SO_FILTER_OB_VISIBLE:
exclude_filter |= SO_FILTER_OB_STATE_VISIBLE;
break;
- case SO_FILTER_OB_HIDDEN:
- exclude_filter |= SO_FILTER_OB_STATE_HIDDEN;
- break;
case SO_FILTER_OB_SELECTED:
exclude_filter |= SO_FILTER_OB_STATE_SELECTED;
break;
@@ -1992,32 +1989,34 @@ static bool outliner_element_visible_get(ViewLayer *view_layer,
}
}
+ bool is_visible = true;
if (exclude_filter & SO_FILTER_OB_STATE_VISIBLE) {
if ((base->flag & BASE_VISIBLE_VIEWLAYER) == 0) {
- return false;
- }
- }
- else if (exclude_filter & SO_FILTER_OB_STATE_HIDDEN) {
- if ((base->flag & BASE_VISIBLE_VIEWLAYER) != 0) {
- return false;
+ is_visible = false;
}
}
else if (exclude_filter & SO_FILTER_OB_STATE_SELECTED) {
if ((base->flag & BASE_SELECTED) == 0) {
- return false;
+ is_visible = false;
}
}
else if (exclude_filter & SO_FILTER_OB_STATE_SELECTABLE) {
if ((base->flag & BASE_SELECTABLE) == 0) {
- return false;
+ is_visible = false;
}
}
else {
BLI_assert(exclude_filter & SO_FILTER_OB_STATE_ACTIVE);
if (base != BASACT(view_layer)) {
- return false;
+ is_visible = false;
}
}
+
+ if (exclude_filter & SO_FILTER_OB_STATE_INVERSE) {
+ is_visible = !is_visible;
+ }
+
+ return is_visible;
}
if ((te->parent != NULL) && (TREESTORE(te->parent)->type == 0) &&