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. */

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

Reply via email to