[Bf-blender-cvs] [c1b8007cea7] temp-outliner-visibility: Merge remote-tracking branch 'origin/blender2.8' into temp-outliner-visibility
Dalai Felinto
noreply at git.blender.org
Tue Dec 11 19:42:17 CET 2018
Commit: c1b8007cea7c6ca3c0475da31d748e234ae94421
Author: Dalai Felinto
Date: Tue Dec 11 16:23:40 2018 -0200
Branches: temp-outliner-visibility
https://developer.blender.org/rBc1b8007cea7c6ca3c0475da31d748e234ae94421
Merge remote-tracking branch 'origin/blender2.8' into temp-outliner-visibility
===================================================================
===================================================================
diff --cc source/blender/editors/object/object_edit.c
index 45e45b849ca,efbea1ee30e..392f4fb83d8
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@@ -295,8 -295,7 +295,8 @@@ static int object_hide_collection_exec(
BKE_layer_collection_set_visible(scene, view_layer, lc, extend);
+ DEG_relations_tag_update(CTX_data_main(C));
- DEG_id_tag_update(&scene->id, DEG_TAG_BASE_FLAGS_UPDATE);
+ DEG_id_tag_update(&scene->id, ID_RECALC_BASE_FLAGS);
WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);
return OPERATOR_FINISHED;
diff --cc source/blender/editors/space_outliner/outliner_draw.c
index 41052215a8b,6cf7e2ce0a1..a5c3d3fade1
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@@ -280,34 -279,21 +280,34 @@@ static void hidebutton_base_flag_cb(bCo
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = poin;
Base *base = poin2;
- bool extend = (CTX_wm_window(C)->eventstate->ctrl == 0);
-
- /* Undo button toggle, let function do it. */
- base->flag ^= BASE_HIDDEN;
-
- BKE_base_set_visible(scene, view_layer, base, extend);
+ Object *ob = base->object;
+ bool freeze = (CTX_wm_window(C)->eventstate->ctrl != 0);
+ bool changed_restrict_view = false;
- if (!extend && (base->flag & BASE_VISIBLE)) {
- /* Auto select solo-ed object. */
- ED_object_base_select(base, BA_SELECT);
- view_layer->basact = base;
+ if (freeze) {
+ ob->restrictflag |= OB_RESTRICT_VIEW;
+ changed_restrict_view = true;
+ }
+ else if (ob->restrictflag & OB_RESTRICT_VIEW) {
+ ob->restrictflag &= ~OB_RESTRICT_VIEW;
+ base->flag &= ~BASE_HIDDEN;
+ changed_restrict_view = true;
+ }
+ else {
+ base->flag ^= BASE_HIDDEN;
}
- DEG_id_tag_update(&scene->id, ID_RECALC_BASE_FLAGS);
- WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);
+ if (changed_restrict_view) {
+ BKE_main_collection_sync(bmain);
- DEG_id_tag_update(&ob->id, DEG_TAG_COPY_ON_WRITE);
++ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
+ DEG_relations_tag_update(bmain);
+ WM_main_add_notifier(NC_OBJECT | ND_DRAW, &ob->id);
+ }
+ if (!freeze) {
+ BKE_layer_collection_sync(scene, view_layer);
- DEG_id_tag_update(&scene->id, DEG_TAG_BASE_FLAGS_UPDATE);
++ DEG_id_tag_update(&scene->id, ID_RECALC_BASE_FLAGS);
+ WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);
+ }
}
static void hidebutton_layer_collection_flag_cb(bContext *C, void *poin, void *poin2)
@@@ -315,25 -301,15 +315,25 @@@
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = poin;
LayerCollection *lc = poin2;
- bool extend = (CTX_wm_window(C)->eventstate->ctrl == 0);
+ Collection *collection = lc->collection;
+ bool freeze = (CTX_wm_window(C)->eventstate->ctrl != 0);
- /* Undo button toggle, let function do it. */
- lc->runtime_flag ^= LAYER_COLLECTION_HAS_VISIBLE_OBJECTS;
+ if (freeze) {
+ collection->flag |= COLLECTION_RESTRICT_VIEW;
+ }
+ else if (collection->flag & COLLECTION_RESTRICT_VIEW) {
+ collection->flag &= ~COLLECTION_RESTRICT_VIEW;
+ lc->flag &= ~LAYER_COLLECTION_RESTRICT_VIEW;
+ }
+ else {
+ lc->flag ^= LAYER_COLLECTION_RESTRICT_VIEW;
+ }
- BKE_layer_collection_set_visible(scene, view_layer, lc, extend);
+ BKE_layer_collection_sync(scene, view_layer);
- DEG_id_tag_update(&scene->id, DEG_TAG_BASE_FLAGS_UPDATE);
+ DEG_id_tag_update(&scene->id, ID_RECALC_BASE_FLAGS);
- WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);
+ DEG_relations_tag_update(CTX_data_main(C));
+ WM_main_add_notifier(NC_SCENE | ND_LAYER_CONTENT, NULL);
}
static void namebutton_cb(bContext *C, void *tsep, char *oldname)
More information about the Bf-blender-cvs
mailing list