Commit: 73d0a3f142c723c1a13da01979b4b56842687709
Author: Brecht Van Lommel
Date:   Wed Jun 20 16:17:12 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB73d0a3f142c723c1a13da01979b4b56842687709

Fix hide object operator to do nothing if no object is selected.

===================================================================

M       source/blender/editors/object/object_edit.c

===================================================================

diff --git a/source/blender/editors/object/object_edit.c 
b/source/blender/editors/object/object_edit.c
index f050297ee2f..ebbc0689e76 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to