Outliner visibility unification: Implement 3 levels of viewport visibility
authorDalai Felinto <dfelinto@gmail.com>
Fri, 30 Nov 2018 04:24:06 +0000 (02:24 -0200)
committerDalai Felinto <dfelinto@gmail.com>
Tue, 5 Feb 2019 21:32:58 +0000 (19:32 -0200)
commit897e047374fa3d3ceef35aa2cdb3372b6a7cc64a
tree5554fb11f9bf40f55d78c88e7443a5b6b4999dae
parente3f7f0c3ebd3c1aa546fa212c3d67d050fab2e41
Outliner visibility unification: Implement 3 levels of viewport visibility

Now collection and objects can be either:
* Disabled for all the view layers.
* Hidden for a view layer but not necessarily for all others.
* Visible for a view layer but not necessarily for all others.

Regarding icons: Whatever we decide to use for the "Hidden for all view
layers" needs to be a toggle-like icon. Because when viewing "Scenes"
instead of "View Layer" in the outliner we should be able to edit the
collection "Hidden for all the view layers" as an on/off option.

The operators are accessible via a Visibility context menu or shortcuts:
* Ctrl + Click: Isolate collection (use shift to extend).
* Alt + Click: Disable collection.
* Shift + Click: Hide/Show collection and its children (objects and collections)

Things yet to be tackled:
* Object outliner context menu can also get a Visibility sub-menu.
* Get better icons for viewport enable/disable.

Note:
* When using emulate 3 button mouse alt+click is used for 2d panning.
  In this case users have to use the operator from the menu.

See T57857 for discussion.

Patch: https://developer.blender.org/D4011
Reviewers: brecht and sergey

Thanks to the reviewers and William Reynish and Julien Kasper in
particular for the feedback.
12 files changed:
release/scripts/startup/bl_ui/space_outliner.py
source/blender/blenkernel/BKE_layer.h
source/blender/blenkernel/intern/layer.c
source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc
source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
source/blender/editors/object/object_edit.c
source/blender/editors/space_outliner/outliner_collections.c
source/blender/editors/space_outliner/outliner_draw.c
source/blender/editors/space_outliner/outliner_intern.h
source/blender/editors/space_outliner/outliner_ops.c
source/blender/makesrna/intern/rna_layer.c