[Bf-blender-cvs] [9be5b2d23fb] blender2.8: Pass viewport to BASE_ related tests, for viewport view/select restrictions

Dalai Felinto noreply at git.blender.org
Fri Nov 23 18:15:00 CET 2018


Commit: 9be5b2d23fb46a7da22d16decd044324ed8d4e78
Author: Dalai Felinto
Date:   Fri Nov 23 14:41:38 2018 -0200
Branches: blender2.8
https://developer.blender.org/rB9be5b2d23fb46a7da22d16decd044324ed8d4e78

Pass viewport to BASE_ related tests, for viewport view/select restrictions

Note: functions like select all are still not respecting that.
I will fix this as part of the local view commit though.

===================================================================

M	source/blender/blenkernel/BKE_object.h
M	source/blender/blenkernel/intern/object.c
M	source/blender/editors/gpencil/drawgpencil.c
M	source/blender/editors/gpencil/gpencil_utils.c
M	source/blender/editors/include/ED_gpencil.h
M	source/blender/editors/object/object_edit.c
M	source/blender/editors/object/object_select.c
M	source/blender/editors/space_view3d/view3d_edit.c
M	source/blender/editors/space_view3d/view3d_select.c
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/editors/transform/transform_gizmo_3d.c
M	source/blender/editors/transform/transform_orientations.c
M	source/blender/editors/transform/transform_snap_object.c
M	source/blender/makesdna/DNA_scene_types.h

===================================================================

diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index f0f99c9cac5..e763c58efd3 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -146,7 +146,7 @@ void BKE_object_matrix_local_get(struct Object *ob, float mat[4][4]);
 
 bool BKE_object_pose_context_check(const struct Object *ob);
 struct Object *BKE_object_pose_armature_get(struct Object *ob);
-struct Object *BKE_object_pose_armature_get_visible(struct Object *ob, struct ViewLayer *view_layer);
+struct Object *BKE_object_pose_armature_get_visible(struct Object *ob, struct ViewLayer *view_layer, struct View3D *v3d);
 
 struct Object **BKE_object_pose_array_get_ex(struct ViewLayer *view_layer, unsigned int *r_objects_len, bool unique);
 struct Object **BKE_object_pose_array_get_unique(struct ViewLayer *view_layer, unsigned int *r_objects_len);
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 95e51481d9a..5e1dab46811 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1207,13 +1207,13 @@ Object *BKE_object_pose_armature_get(Object *ob)
 	return NULL;
 }
 
-Object *BKE_object_pose_armature_get_visible(Object *ob, ViewLayer *view_layer)
+Object *BKE_object_pose_armature_get_visible(Object *ob, ViewLayer *view_layer, View3D *v3d)
 {
 	Object *ob_armature = BKE_object_pose_armature_get(ob);
 	if (ob_armature) {
 		Base *base = BKE_view_layer_base_find(view_layer, ob_armature);
 		if (base) {
-			if (BASE_VISIBLE(base)) {
+			if (BASE_VISIBLE(v3d, base)) {
 				return ob_armature;
 			}
 		}
@@ -3612,8 +3612,8 @@ LinkNode *BKE_object_relational_superset(struct ViewLayer *view_layer, eObjectSe
 			obrel_list_add(&links, ob);
 		}
 		else {
-			if ((objectSet == OB_SET_SELECTED && TESTBASELIB_BGMODE(base)) ||
-			    (objectSet == OB_SET_VISIBLE  && BASE_EDITABLE_BGMODE(base)))
+			if ((objectSet == OB_SET_SELECTED && TESTBASELIB_BGMODE(((View3D *)NULL), base)) ||
+			    (objectSet == OB_SET_VISIBLE  && BASE_EDITABLE_BGMODE(((View3D *)NULL), base)))
 			{
 				Object *ob = base->object;
 
@@ -3643,7 +3643,7 @@ LinkNode *BKE_object_relational_superset(struct ViewLayer *view_layer, eObjectSe
 				if (includeFilter & (OB_REL_CHILDREN | OB_REL_CHILDREN_RECURSIVE)) {
 					Base *local_base;
 					for (local_base = view_layer->object_bases.first; local_base; local_base = local_base->next) {
-						if (BASE_EDITABLE_BGMODE(local_base)) {
+						if (BASE_EDITABLE_BGMODE(((View3D *)NULL), local_base)) {
 
 							Object *child = local_base->object;
 							if (obrel_list_test(child)) {
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index 2b2e3772e4d..7f67caf91ca 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -1726,7 +1726,7 @@ void ED_gpencil_draw_view3d(
 
 	/* check that we have grease-pencil stuff to draw */
 	// XXX: This is the only place that still uses this function
-	bGPdata *gpd = ED_gpencil_data_get_active_v3d(view_layer);
+	bGPdata *gpd = ED_gpencil_data_get_active_v3d(view_layer, v3d);
 	if (gpd == NULL) return;
 
 	/* when rendering to the offscreen buffer we don't want to
diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c
index a0c31b64666..aff026955d1 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -264,7 +264,7 @@ bool ED_gpencil_data_owner_is_annotation(PointerRNA *owner_ptr)
 /* -------------------------------------------------------- */
 
 // XXX: this should be removed... We really shouldn't duplicate logic like this!
-bGPdata *ED_gpencil_data_get_active_v3d(ViewLayer *view_layer)
+bGPdata *ED_gpencil_data_get_active_v3d(ViewLayer *view_layer, View3D *v3d)
 {
 	Base *base = view_layer->basact;
 	bGPdata *gpd = NULL;
@@ -272,7 +272,7 @@ bGPdata *ED_gpencil_data_get_active_v3d(ViewLayer *view_layer)
 	/* We have to make sure active object is actually visible and selected, else we must use default scene gpd,
 	 * to be consistent with ED_gpencil_data_get_active's behavior.
 	 */
-	if (base && TESTBASE(base)) {
+	if (base && TESTBASE(v3d, base)) {
 		if (base->object->type == OB_GPENCIL)
 			gpd = base->object->data;
 	}
diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h
index 5d93c2e3065..8b29c208863 100644
--- a/source/blender/editors/include/ED_gpencil.h
+++ b/source/blender/editors/include/ED_gpencil.h
@@ -113,7 +113,7 @@ struct bGPdata *ED_gpencil_data_get_active_direct(
 bool ED_gpencil_data_owner_is_annotation(struct PointerRNA *owner_ptr);
 
 /* 3D View */
-struct bGPdata  *ED_gpencil_data_get_active_v3d(struct ViewLayer *view_layer);
+struct bGPdata  *ED_gpencil_data_get_active_v3d(struct ViewLayer *view_layer, struct View3D *v3d);
 
 bool ED_gpencil_has_keyframe_v3d(struct Scene *scene, struct Object *ob, int cfra);
 
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index e9bea64b56c..c376b0cf78f 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -894,7 +894,7 @@ static void copy_texture_space(Object *to, Object *ob)
 }
 
 /* UNUSED, keep in case we want to copy functionality for use elsewhere */
-static void copy_attr(Main *bmain, Scene *scene, ViewLayer *view_layer, short event)
+static void copy_attr(Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d, short event)
 {
 	Object *ob;
 	Base *base;
@@ -918,7 +918,7 @@ static void copy_attr(Main *bmain, Scene *scene, ViewLayer *view_layer, short ev
 
 	for (base = FIRSTBASE(view_layer); base; base = base->next) {
 		if (base != BASACT(view_layer)) {
-			if (TESTBASELIB(base)) {
+			if (TESTBASELIB(v3d, base)) {
 				DEG_id_tag_update(&base->object->id, OB_RECALC_DATA);
 
 				if (event == 1) {  /* loc */
@@ -1111,7 +1111,7 @@ static void copy_attr(Main *bmain, Scene *scene, ViewLayer *view_layer, short ev
 	}
 }
 
-static void UNUSED_FUNCTION(copy_attr_menu) (Main *bmain, Scene *scene, ViewLayer *view_layer, Object *obedit)
+static void UNUSED_FUNCTION(copy_attr_menu) (Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d, Object *obedit)
 {
 	Object *ob;
 	short event;
@@ -1165,7 +1165,7 @@ static void UNUSED_FUNCTION(copy_attr_menu) (Main *bmain, Scene *scene, ViewLaye
 	event = pupmenu(str);
 	if (event <= 0) return;
 
-	copy_attr(bmain, scene, view_layer, event);
+	copy_attr(bmain, scene, view_layer, v3d, event);
 }
 
 /* ******************* force field toggle operator ***************** */
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index 1e69916d865..10e9b58b38b 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -755,6 +755,7 @@ static bool select_grouped_children(bContext *C, Object *ob, const bool recursiv
 static bool select_grouped_parent(bContext *C) /* Makes parent active and de-selected OBACT */
 {
 	ViewLayer *view_layer = CTX_data_view_layer(C);
+	View3D *v3d = CTX_wm_view3d(C);
 	Base *baspar, *basact = CTX_data_active_base(C);
 	bool changed = false;
 
@@ -765,7 +766,7 @@ static bool select_grouped_parent(bContext *C) /* Makes parent active and de-sel
 	baspar = BKE_view_layer_base_find(view_layer, basact->object->parent);
 
 	/* can be NULL if parent in other scene */
-	if (baspar && BASE_SELECTABLE(baspar)) {
+	if (baspar && BASE_SELECTABLE(v3d, baspar)) {
 		ED_object_base_select(baspar, BA_SELECT);
 		ED_object_base_activate(C, baspar);
 		changed = true;
@@ -823,6 +824,7 @@ static bool select_grouped_collection(bContext *C, Object *ob)  /* Select object
 static bool select_grouped_object_hooks(bContext *C, Object *ob)
 {
 	ViewLayer *view_layer = CTX_data_view_layer(C);
+	View3D *v3d = CTX_wm_view3d(C);
 
 	bool changed = false;
 	Base *base;
@@ -834,7 +836,7 @@ static bool select_grouped_object_hooks(bContext *C, Object *ob)
 			hmd = (HookModifierData *) md;
 			if (hmd->object) {
 				base = BKE_view_layer_base_find(view_layer, hmd->object);
-				if (base && ((base->flag & BASE_SELECTED) == 0) && (BASE_SELECTABLE(base))) {
+				if (base && ((base->flag & BASE_SELECTED) == 0) && (BASE_SELECTABLE(v3d, base))) {
 					ED_object_base_select(base, BA_SELECT);
 					changed = true;
 				}
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index d91f20ec9ab..abb6fed965e 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -254,6 +254,7 @@ static bool view3d_orbit_calc_center(bContext *C, float r_dyn_ofs[3])
 	const Depsgraph *depsgraph = CTX_data_depsgraph(C);
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer_eval = DEG_get_evaluated_view_layer(depsgraph);
+	View3D *v3d = CTX_wm_view3d(C);
 	Object *ob_act_eval = OBACT(view_layer_eval);
 	Object *ob_act = DEG_get_original_object(ob_act_eval);
 
@@ -298,7 +299,7 @@ static bool view3d_orbit_calc_center(bContext *C, float r_dyn_ofs[3])
 
 		zero_v3(select_center);
 		for (base_eval = FIRSTBASE(view_layer_eval); base_eval; base_eval = base_eval->next) {
-			if (TESTBASE(base_eval)) {
+			if (TESTBASE(v3d, base_eval)) {
 				/* use the boundbox if we can */
 				Object *ob_eval = base_eval->object;
 
@@ -2722,7 +2723,7 @@ static int view3d_all_exec(bContext *C, wmOperator *op)
 	}
 
 	for (base_eval = view_layer_eval->object_bases.first; base_eval; base_eval = base_eval->next) {
-		if (BASE_VISIBLE(base_eval)) {
+		if (BASE_VISIBLE(v3d, base_eval)) {
 			changed = true;
 
 			Object *ob = DEG_get_original_object(base_eval->object);
@@ -2819,7 +2820,7 @@ static int viewselected_exec(bContext *C, wmOperator *op)
 		/* this is weak code this way, we should make a generic active/selection callback interface once... */
 		Base *base_eval;
 		for (base_eval = view_layer_eval->object_bases.first; base_eval; base_eval = base_eval->next) {
-			if (TESTBASELIB(base_eval)) {
+			if (TESTBASELIB(v3d

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list