Fix hide object operator to do nothing if no object is selected.
This commit is contained in:
parent
82dc5f91e8
commit
73d0a3f142
|
@ -210,8 +210,23 @@ static int object_hide_view_set_exec(bContext *C, wmOperator *op)
|
|||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
const bool unselected = RNA_boolean_get(op->ptr, "unselected");
|
||||
bool changed = false;
|
||||
|
||||
/* Do nothing if no objects was selected. */
|
||||
bool have_selected = false;
|
||||
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
|
||||
if (base->flag & BASE_VISIBLED) {
|
||||
if (base->flag & BASE_SELECTED) {
|
||||
have_selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!have_selected) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
/* Hide selected or unselected objects. */
|
||||
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
|
||||
if (!(base->flag & BASE_VISIBLED)) {
|
||||
continue;
|
||||
|
@ -221,22 +236,16 @@ static int object_hide_view_set_exec(bContext *C, wmOperator *op)
|
|||
if (base->flag & BASE_SELECTED) {
|
||||
ED_object_base_select(base, BA_DESELECT);
|
||||
base->flag |= BASE_HIDE;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!(base->flag & BASE_SELECTED)) {
|
||||
ED_object_base_select(base, BA_DESELECT);
|
||||
base->flag |= BASE_HIDE;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!changed) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
BKE_layer_collection_sync(scene, view_layer);
|
||||
DEG_id_tag_update(&scene->id, DEG_TAG_BASE_FLAGS_UPDATE);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);
|
||||
|
|
Loading…
Reference in New Issue