Fix multi-object edit mode and local view/collections

Before this patch you could go to a local view with a single object,
while you had other objects also in edit mode, and your operators would
affect all objects even the ones outside your local view (same for local
collection).

Differential Revision: https://developer.blender.org/D6064
This commit is contained in:
Dalai Felinto 2019-10-15 00:10:35 -03:00
parent b0476f0631
commit 3ff25fa80a
1 changed files with 4 additions and 3 deletions

View File

@ -1638,7 +1638,7 @@ void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_
data->object_type = base->object->type;
}
if (!base_is_in_mode(data, base)) {
if (!(base_is_in_mode(data, base) && BKE_base_is_visible(data->v3d, base))) {
BKE_view_layer_bases_in_mode_iterator_next(iter);
}
}
@ -1651,7 +1651,7 @@ void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
if (base == data->base_active) {
/* first step */
base = data->view_layer->object_bases.first;
if (base == data->base_active) {
if ((base == data->base_active) && BKE_base_is_visible(data->v3d, base)) {
base = base->next;
}
}
@ -1660,7 +1660,8 @@ void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
}
while (base) {
if ((base != data->base_active) && base_is_in_mode(data, base)) {
if ((base != data->base_active) && base_is_in_mode(data, base) &&
BKE_base_is_visible(data->v3d, base)) {
iter->current = base;
return;
}