[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