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:
authorDalai Felinto <dfelinto@gmail.com>2019-10-15 06:10:35 +0300
committerDalai Felinto <dfelinto@gmail.com>2019-10-16 18:31:27 +0300
commit3ff25fa80ac54cf32dec370e7a66873f5a8429e0 (patch)
tree6357d17d491b58cbe1c4ff74231958063c109f94 /source/blender/blenkernel/intern/layer.c
parentb0476f06312db95423e6b83a86d7675dbbc94431 (diff)
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
Diffstat (limited to 'source/blender/blenkernel/intern/layer.c')
-rw-r--r--source/blender/blenkernel/intern/layer.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index fd5b4b6e506..f12999b033d 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -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;
}