diff options
author | Sebastian Parborg <zeddb> | 2019-01-22 22:24:33 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-01-22 22:24:42 +0300 |
commit | ccc48bf27eaa6651674a857a95884d821e42e1a7 (patch) | |
tree | af37ff1023519ba8aaa49759ff1f3b24b52c9618 /source | |
parent | a34297a6d64d1a44a504e93a8a6cd383aa014382 (diff) |
Fix T60602: outliner pose bone selection does not update in viewport.
Differential Revision: https://developer.blender.org/D4223
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_tag.cc | 11 | ||||
-rw-r--r-- | source/blender/editors/armature/pose_select.c | 3 | ||||
-rw-r--r-- | source/blender/editors/space_outliner/outliner_select.c | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc index 26a12f42bfc..27e1a5fb7dd 100644 --- a/source/blender/depsgraph/intern/depsgraph_tag.cc +++ b/source/blender/depsgraph/intern/depsgraph_tag.cc @@ -93,6 +93,11 @@ void depsgraph_geometry_tag_to_component(const ID *id, } } +bool is_selectable_data_id_type(const ID_Type id_type) +{ + return ELEM(id_type, ID_ME, ID_CU, ID_MB, ID_LT, ID_GD); +} + void depsgraph_select_tag_to_component_opcode( const ID *id, eDepsNode_Type *component_type, @@ -120,10 +125,14 @@ void depsgraph_select_tag_to_component_opcode( *component_type = DEG_NODE_TYPE_BATCH_CACHE; *operation_code = DEG_OPCODE_MOVIECLIP_SELECT_UPDATE; } - else { + else if (is_selectable_data_id_type(id_type)) { *component_type = DEG_NODE_TYPE_BATCH_CACHE; *operation_code = DEG_OPCODE_GEOMETRY_SELECT_UPDATE; } + else { + *component_type = DEG_NODE_TYPE_COPY_ON_WRITE; + *operation_code = DEG_OPCODE_COPY_ON_WRITE; + } } void depsgraph_base_flags_tag_to_component_opcode( diff --git a/source/blender/editors/armature/pose_select.c b/source/blender/editors/armature/pose_select.c index 1916495465c..3f582c7ada2 100644 --- a/source/blender/editors/armature/pose_select.c +++ b/source/blender/editors/armature/pose_select.c @@ -107,8 +107,7 @@ void ED_pose_bone_select_tag_update(Object *ob) DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY); } - /* copy on write tag is needed (for the armature), or else no refresh happens */ - DEG_id_tag_update(&arm->id, ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update(&arm->id, ID_RECALC_SELECT); } diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index 1a84d6bd142..d1b18057830 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -549,7 +549,7 @@ static eOLDrawState tree_element_active_posechannel( } WM_event_add_notifier(C, NC_OBJECT | ND_BONE_ACTIVE, ob); - + DEG_id_tag_update(&arm->id, ID_RECALC_SELECT); } } else { |