[Bf-blender-cvs] [18593c7cd3f] blender2.8: Cleanup: add reveal_hidden arg to jump-to API calls

Campbell Barton noreply at git.blender.org
Wed Nov 21 03:08:19 CET 2018


Commit: 18593c7cd3ff3f63cec7115a5c8e0d8e51a7b784
Author: Campbell Barton
Date:   Wed Nov 21 13:04:03 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB18593c7cd3ff3f63cec7115a5c8e0d8e51a7b784

Cleanup: add reveal_hidden arg to jump-to API calls

Jumping to data shouldn't necessarily change hidden status
or visible layers.

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

M	source/blender/editors/include/ED_object.h
M	source/blender/editors/interface/interface_ops.c
M	source/blender/editors/object/object_select.c

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

diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h
index 45cb02a77ea..1101c966118 100644
--- a/source/blender/editors/include/ED_object.h
+++ b/source/blender/editors/include/ED_object.h
@@ -304,8 +304,12 @@ void ED_object_check_force_modifiers(
 
 struct Base *ED_object_find_first_by_data_id(struct ViewLayer *view_layer, struct ID *id);
 
-bool ED_object_jump_to_object(struct bContext *C, struct Object *ob);
-bool ED_object_jump_to_bone(struct bContext *C, struct Object *ob, const char *bone_name);
+bool ED_object_jump_to_object(
+        struct bContext *C, struct Object *ob,
+        const bool reveal_hidden);
+bool ED_object_jump_to_bone(
+        struct bContext *C, struct Object *ob, const char *bone_name,
+        const bool reveal_hidden);
 
 /* object_facemap_ops.c */
 void ED_object_facemap_face_add(struct Object *ob, struct bFaceMap *fmap, int facenum);
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
index 0b35961483e..cc609216e9a 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -855,12 +855,14 @@ static bool jump_to_target_ptr(bContext *C, PointerRNA ptr, const bool poll)
 		ok = true;
 	}
 	else {
+		/* Make optional. */
+		const bool reveal_hidden = true;
 		/* Select and activate the target. */
 		if (target_type == &RNA_Bone) {
-			ok = ED_object_jump_to_bone(C, base->object, bone_name);
+			ok = ED_object_jump_to_bone(C, base->object, bone_name, reveal_hidden);
 		}
 		else if (target_type == &RNA_Object) {
-			ok = ED_object_jump_to_object(C, base->object);
+			ok = ED_object_jump_to_object(C, base->object, reveal_hidden);
 		}
 		else {
 			BLI_assert(0);
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index 366cca9fe0d..5873c972cae 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -254,7 +254,8 @@ Base *ED_object_find_first_by_data_id(ViewLayer *view_layer, ID *id)
  *
  * \returns false if not found in current view layer
  */
-bool ED_object_jump_to_object(bContext *C, Object *ob)
+bool ED_object_jump_to_object(
+        bContext *C, Object *ob, const bool UNUSED(reveal_hidden))
 {
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Base *base = BKE_view_layer_base_find(view_layer, ob);
@@ -263,6 +264,8 @@ bool ED_object_jump_to_object(bContext *C, Object *ob)
 		return false;
 	}
 
+	/* TODO, use 'reveal_hidden', as is done with bones. */
+
 	if (view_layer->basact != base) {
 		/* Select if not selected. */
 		if (!(base->flag & BASE_SELECTED)) {
@@ -289,7 +292,9 @@ bool ED_object_jump_to_object(bContext *C, Object *ob)
  *
  * \returns false if object not in layer, bone not found, or other error
  */
-bool ED_object_jump_to_bone(bContext *C, Object *ob, const char *bone_name)
+bool ED_object_jump_to_bone(
+        bContext *C, Object *ob, const char *bone_name,
+        const bool reveal_hidden)
 {
 	/* Verify it's a valid armature object. */
 	if (ob == NULL || ob->type != OB_ARMATURE) {
@@ -303,7 +308,7 @@ bool ED_object_jump_to_bone(bContext *C, Object *ob, const char *bone_name)
 	}
 
 	/* Activate the armature object. */
-	if (!ED_object_jump_to_object(C, ob)) {
+	if (!ED_object_jump_to_object(C, ob, reveal_hidden)) {
 		return false;
 	}
 
@@ -316,11 +321,13 @@ bool ED_object_jump_to_bone(bContext *C, Object *ob, const char *bone_name)
 		/* In Edit mode select and activate the target Edit-Bone. */
 		EditBone *ebone = ED_armature_ebone_find_name(arm->edbo, bone_name);
 		if (ebone != NULL) {
-			/* Unhide the bone. */
-			ebone->flag &= ~BONE_HIDDEN_A;
+			if (reveal_hidden) {
+				/* Unhide the bone. */
+				ebone->flag &= ~BONE_HIDDEN_A;
 
-			if ((arm->layer & ebone->layer) == 0) {
-				arm->layer |= 1U << bitscan_forward_uint(ebone->layer);
+				if ((arm->layer & ebone->layer) == 0) {
+					arm->layer |= 1U << bitscan_forward_uint(ebone->layer);
+				}
 			}
 
 			/* Select it. */
@@ -341,11 +348,13 @@ bool ED_object_jump_to_bone(bContext *C, Object *ob, const char *bone_name)
 		/* In Pose mode select and activate the target Bone/Pose-Channel. */
 		bPoseChannel *pchan = BKE_pose_channel_find_name(ob->pose, bone_name);
 		if (pchan != NULL) {
-			/* Unhide the bone. */
-			pchan->bone->flag &= ~BONE_HIDDEN_P;
+			if (reveal_hidden) {
+				/* Unhide the bone. */
+				pchan->bone->flag &= ~BONE_HIDDEN_P;
 
-			if ((arm->layer & pchan->bone->layer) == 0) {
-				arm->layer |= 1U << bitscan_forward_uint(pchan->bone->layer);
+				if ((arm->layer & pchan->bone->layer) == 0) {
+					arm->layer |= 1U << bitscan_forward_uint(pchan->bone->layer);
+				}
 			}
 
 			/* Select it. */



More information about the Bf-blender-cvs mailing list