[Bf-blender-cvs] [ba1cae5a04d] master: Fix some inconsistencies in object visibility/selectability tests.

Brecht Van Lommel noreply at git.blender.org
Thu Jan 3 15:20:08 CET 2019


Commit: ba1cae5a04d429e2f4e58d5fd1e740c70462620a
Author: Brecht Van Lommel
Date:   Thu Jan 3 14:20:43 2019 +0100
Branches: master
https://developer.blender.org/rBba1cae5a04d429e2f4e58d5fd1e740c70462620a

Fix some inconsistencies in object visibility/selectability tests.

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

M	source/blender/editors/screen/screen_context.c
M	source/blender/editors/space_view3d/view3d_gizmo_armature.c
M	source/blender/editors/space_view3d/view3d_gizmo_camera.c
M	source/blender/editors/space_view3d/view3d_gizmo_empty.c
M	source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
M	source/blender/editors/space_view3d/view3d_gizmo_lamp.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_object_api.c

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

diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index 15d9b3c5ccb..d5683ae1267 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -121,16 +121,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 	}
 	else if (CTX_data_equals(member, "selectable_objects")) {
 		for (Base *base = view_layer->object_bases.first; base; base = base->next) {
-			if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
-				continue;
-			}
-			if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
-				continue;
-			}
-			if (v3d && ((v3d->object_type_exclude_select & (1 << base->object->type)) != 0)) {
-				continue;
-			}
-			if (((base->flag & BASE_VISIBLE) != 0) && ((base->flag & BASE_SELECTABLE) != 0)) {
+			if (BASE_SELECTABLE_BGMODE(v3d, base)) {
 				CTX_data_id_list_add(result, &base->object->id);
 			}
 		}
@@ -180,16 +171,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 	}
 	else if (CTX_data_equals(member, "selectable_bases")) {
 		for (Base *base = view_layer->object_bases.first; base; base = base->next) {
-			if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
-				continue;
-			}
-			if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
-				continue;
-			}
-			if (v3d && ((v3d->object_type_exclude_select & (1 << base->object->type)) != 0)) {
-				continue;
-			}
-			if ((base->flag & BASE_VISIBLE) && (base->flag & BASE_SELECTABLE) != 0) {
+			if (BASE_SELECTABLE_BGMODE(v3d, base)) {
 				CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
 			}
 		}
@@ -198,13 +180,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 	}
 	else if (CTX_data_equals(member, "selected_bases")) {
 		for (Base *base = view_layer->object_bases.first; base; base = base->next) {
-			if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
-				continue;
-			}
-			if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
-				continue;
-			}
-			if ((base->flag & BASE_SELECTED) != 0) {
+			if (BASE_VISIBLE_BGMODE(v3d, base) && (base->flag & BASE_SELECTED) != 0) {
 				CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
 			}
 		}
@@ -213,13 +189,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 	}
 	else if (CTX_data_equals(member, "selected_editable_bases")) {
 		for (Base *base = view_layer->object_bases.first; base; base = base->next) {
-			if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
-				continue;
-			}
-			if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
-				continue;
-			}
-			if ((base->flag & BASE_SELECTED) != 0) {
+			if (BASE_VISIBLE_BGMODE(v3d, base) && (base->flag & BASE_SELECTED) != 0) {
 				if (0 == BKE_object_is_libdata(base->object)) {
 					CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
 				}
@@ -231,13 +201,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 	else if (CTX_data_equals(member, "editable_bases")) {
 		/* Visible + Editable, but not necessarily selected */
 		for (Base *base = view_layer->object_bases.first; base; base = base->next) {
-			if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
-				continue;
-			}
-			if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
-				continue;
-			}
-			if ((base->flag & BASE_VISIBLE) != 0) {
+			if (BASE_VISIBLE_BGMODE(v3d, base)) {
 				if (0 == BKE_object_is_libdata(base->object)) {
 					CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
 				}
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_armature.c b/source/blender/editors/space_view3d/view3d_gizmo_armature.c
index b29ce64eba5..3d7e8065a9f 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_armature.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_armature.c
@@ -138,7 +138,7 @@ static bool WIDGETGROUP_armature_spline_poll(const bContext *C, wmGizmoGroupType
 
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BASACT(view_layer);
-	if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
+	if (base && BASE_SELECTABLE(v3d, base)) {
 		Object *ob = BKE_object_pose_armature_get(base->object);
 		if (ob) {
 			const bArmature *arm = ob->data;
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_camera.c b/source/blender/editors/space_view3d/view3d_gizmo_camera.c
index 472c9571223..bf37f9c3b49 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_camera.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_camera.c
@@ -72,7 +72,7 @@ static bool WIDGETGROUP_camera_poll(const bContext *C, wmGizmoGroupType *UNUSED(
 
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BASACT(view_layer);
-	if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
+	if (base && BASE_SELECTABLE(v3d, base)) {
 		Object *ob = base->object;
 		if (ob->type == OB_CAMERA) {
 			Camera *camera = ob->data;
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_empty.c b/source/blender/editors/space_view3d/view3d_gizmo_empty.c
index 24236ac2e6c..b0eb9993576 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_empty.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_empty.c
@@ -120,7 +120,7 @@ static bool WIDGETGROUP_empty_image_poll(const bContext *C, wmGizmoGroupType *UN
 
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BASACT(view_layer);
-	if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
+	if (base && BASE_SELECTABLE(v3d, base)) {
 		Object *ob = base->object;
 		if (ob->type == OB_EMPTY) {
 			if (ob->empty_drawtype == OB_EMPTY_IMAGE) {
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c b/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
index 656836488ba..b49a38085a1 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
@@ -64,7 +64,7 @@ static bool WIDGETGROUP_forcefield_poll(const bContext *C, wmGizmoGroupType *UNU
 
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BASACT(view_layer);
-	if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
+	if (base && BASE_SELECTABLE(v3d, base)) {
 		Object *ob = base->object;
 		if (ob->pd && ob->pd->forcefield) {
 			return true;
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_lamp.c b/source/blender/editors/space_view3d/view3d_gizmo_lamp.c
index 0edc30597c4..a723dae058a 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_lamp.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_lamp.c
@@ -65,7 +65,7 @@ static bool WIDGETGROUP_lamp_spot_poll(const bContext *C, wmGizmoGroupType *UNUS
 
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BASACT(view_layer);
-	if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
+	if (base && BASE_SELECTABLE(v3d, base)) {
 		Object *ob = base->object;
 		if (ob->type == OB_LAMP) {
 			Lamp *la = ob->data;
@@ -174,7 +174,7 @@ static bool WIDGETGROUP_lamp_area_poll(const bContext *C, wmGizmoGroupType *UNUS
 
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BASACT(view_layer);
-	if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
+	if (base && BASE_SELECTABLE(v3d, base)) {
 		Object *ob = base->object;
 		if (ob->type == OB_LAMP) {
 			Lamp *la = ob->data;
@@ -258,7 +258,7 @@ static bool WIDGETGROUP_lamp_target_poll(const bContext *C, wmGizmoGroupType *UN
 
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BASACT(view_layer);
-	if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
+	if (base && BASE_SELECTABLE(v3d, base)) {
 		Object *ob = base->object;
 		if (ob->type == OB_LAMP) {
 			Lamp *la = ob->data;
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 5c9d9a74af3..4b66ee62269 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1819,41 +1819,32 @@ extern const char *RE_engine_id_CYCLES;
 #define MINAFRAMEF	-1048574.0f
 
 /* deprecate this! */
-#define TESTBASE(v3d, base)  (                                                \
-	(((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
-	(((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0) && \
-	(((base)->flag & BASE_SELECTED) != 0) &&                                  \
+#define BASE_VISIBLE(v3d, base) (                                                                        \
+	(((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) &&                  \
+	(((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0) &&                        \
 	(((base)->flag & BASE_VISIBLE) != 0))
-#define TESTBASELIB(v3d, base)  (                                             \
-	(((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
-	(((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0) && \
-	(((base)->flag & BASE_SELECTED) != 0) &&                                  \
-	((base)->object->id.lib == NULL) &&                                       \
-	(((base)->flag & BASE_VISIBLE) != 0))
-#define TESTBASELIB_BGMODE(v3d, base)  (                                      \
-	((v3d == NULL) || ((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
-	((v3d == NULL) || (((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0)) && \
-	(((base)->flag & BASE_SELECTED) != 0) &&                                  \
-	((base)->object->id.lib == NULL) &&                                       \
-	(((base)->flag & BASE_VISIBLE) != 0))
-#define BASE_EDITABLE_BGMODE(v3d, base)  (                                    \
+#define BASE_VISIB

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list