From c6cbcf83d0153922ac32452c198252f44867a6cb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 14 Feb 2019 17:50:41 +1100 Subject: Fix T61472: Hide Unselected fails w/ no selection Also skip mesh recalculation when no hide/reveal is performed. --- source/blender/editors/object/object_edit.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'source/blender/editors/object') diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 89f043966db..0115682c2c0 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -200,21 +200,7 @@ 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"); - - /* 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_VISIBLE) { - if (base->flag & BASE_SELECTED) { - have_selected = true; - break; - } - } - } - - if (!have_selected) { - return OPERATOR_CANCELLED; - } + bool changed = false; /* Hide selected or unselected objects. */ for (Base *base = view_layer->object_bases.first; base; base = base->next) { @@ -226,15 +212,20 @@ 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_HIDDEN; + changed = true; } } else { if (!(base->flag & BASE_SELECTED)) { ED_object_base_select(base, BA_DESELECT); base->flag |= BASE_HIDDEN; + changed = true; } } } + if (!changed) { + return OPERATOR_CANCELLED; + } BKE_layer_collection_sync(scene, view_layer); DEG_id_tag_update(&scene->id, ID_RECALC_BASE_FLAGS); -- cgit v1.2.3