diff options
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/space_outliner/outliner_select.c | 13 | ||||
-rw-r--r-- | source/blender/editors/space_outliner/outliner_sync.c | 6 |
2 files changed, 5 insertions, 14 deletions
diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index c6b5f2e2d2b..688f6d646ff 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -714,20 +714,9 @@ static eOLDrawState tree_element_active_bone(bContext *C, static void tree_element_active_ebone__sel(bContext *C, bArmature *arm, EditBone *ebone, short sel) { if (sel) { - ebone->flag |= BONE_SELECTED | BONE_ROOTSEL | BONE_TIPSEL; arm->act_edbone = ebone; - /* Flush to parent? */ - if (ebone->parent && (ebone->flag & BONE_CONNECTED)) { - ebone->parent->flag |= BONE_TIPSEL; - } - } - else { - ebone->flag &= ~(BONE_SELECTED | BONE_ROOTSEL | BONE_TIPSEL); - /* Flush to parent? */ - if (ebone->parent && (ebone->flag & BONE_CONNECTED)) { - ebone->parent->flag &= ~BONE_TIPSEL; - } } + ED_armature_ebone_select_set(ebone, sel); WM_event_add_notifier(C, NC_OBJECT | ND_BONE_ACTIVE, CTX_data_edit_object(C)); } static eOLDrawState tree_element_active_ebone(bContext *C, diff --git a/source/blender/editors/space_outliner/outliner_sync.c b/source/blender/editors/space_outliner/outliner_sync.c index 3055d15725b..24fa72fdabf 100644 --- a/source/blender/editors/space_outliner/outliner_sync.c +++ b/source/blender/editors/space_outliner/outliner_sync.c @@ -252,11 +252,13 @@ static void outliner_select_sync_to_edit_bone(ViewLayer *view_layer, if (EBONE_SELECTABLE(arm, ebone)) { if (tselem->flag & TSE_SELECTED) { - ebone->flag |= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); - + ED_armature_ebone_select_set(ebone, true); add_selected_item(selected_ebones, ebone); } else if (!is_edit_bone_selected(selected_ebones, ebone)) { + /* Dont flush to parent bone tip, synced selection is iterating the whole tree so deselecting + * potential children with 'ED_armature_ebone_select_set(ebone, false)' would leave own tip + * deselected. */ ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); } } |