[Bf-blender-cvs] [73d0a3f142c] blender2.8: Fix hide object operator to do nothing if no object is selected.
Brecht Van Lommel
noreply at git.blender.org
Wed Jun 20 18:14:29 CEST 2018
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);
More information about the Bf-blender-cvs
mailing list