Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-01-03 16:20:43 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-01-03 17:19:32 +0300
commitba1cae5a04d429e2f4e58d5fd1e740c70462620a (patch)
treea3299b49718e2cd74f412807fb97156a77d98efa /source/blender/editors/screen/screen_context.c
parenta2d24345bfead8e4279a818a67d73d42d2565b96 (diff)
Fix some inconsistencies in object visibility/selectability tests.
Diffstat (limited to 'source/blender/editors/screen/screen_context.c')
-rw-r--r--source/blender/editors/screen/screen_context.c46
1 files changed, 5 insertions, 41 deletions
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);
}