[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