diff options
author | Nathan Craddock <nzcraddock@gmail.com> | 2019-08-08 07:27:07 +0300 |
---|---|---|
committer | Nathan Craddock <nzcraddock@gmail.com> | 2019-08-16 21:30:53 +0300 |
commit | 71eb65328078d3b3ca440a9a23a7aa08238a6710 (patch) | |
tree | eae7a6c557af86911d867f4644a24a618394dc9a /source/blender/editors/armature/pose_select.c | |
parent | 7ba2720a70c83eb41f577aae4eb5a3403f6bb6b9 (diff) |
Outliner: Synced selection and active element highlighting
Adds a toggle to the filter menu for outliner synced selection. Enabled
by default, this ensures selection is synced between objects, bones, and
sequences. An active outliner element theme color is added to indicate
which element is active.
Synced selection is controlled on the operator level. Each operator
that modifies selection for objects, bones, sequences, or outliner
elements needs to call the respective ED_outliner_select_sync_from..
function to tag outliners to be synced.
Syncing is done lazily on outliner draw.
Diffstat (limited to 'source/blender/editors/armature/pose_select.c')
-rw-r--r-- | source/blender/editors/armature/pose_select.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/editors/armature/pose_select.c b/source/blender/editors/armature/pose_select.c index 8434fee6e78..beec2f8358f 100644 --- a/source/blender/editors/armature/pose_select.c +++ b/source/blender/editors/armature/pose_select.c @@ -54,6 +54,7 @@ #include "ED_keyframing.h" #include "ED_mesh.h" #include "ED_object.h" +#include "ED_outliner.h" #include "ED_screen.h" #include "ED_select_utils.h" #include "ED_view3d.h" @@ -449,6 +450,8 @@ static int pose_select_connected_invoke(bContext *C, wmOperator *op, const wmEve selectconnected_posebonechildren(base->object, curBone, extend); } + ED_outliner_select_sync_from_pose_bone_tag(C); + ED_pose_bone_select_tag_update(base->object); return OPERATOR_FINISHED; @@ -514,6 +517,8 @@ static int pose_de_select_all_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + ED_outliner_select_sync_from_pose_bone_tag(C); + WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, NULL); return OPERATOR_FINISHED; @@ -560,6 +565,8 @@ static int pose_select_parent_exec(bContext *C, wmOperator *UNUSED(op)) return OPERATOR_CANCELLED; } + ED_outliner_select_sync_from_pose_bone_tag(C); + ED_pose_bone_select_tag_update(ob); return OPERATOR_FINISHED; } @@ -624,6 +631,8 @@ static int pose_select_constraint_target_exec(bContext *C, wmOperator *UNUSED(op return OPERATOR_CANCELLED; } + ED_outliner_select_sync_from_pose_bone_tag(C); + return OPERATOR_FINISHED; } @@ -712,6 +721,8 @@ static int pose_select_hierarchy_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } + ED_outliner_select_sync_from_pose_bone_tag(C); + ED_pose_bone_select_tag_update(ob); return OPERATOR_FINISHED; @@ -1061,6 +1072,8 @@ static int pose_select_grouped_exec(bContext *C, wmOperator *op) /* report done status */ if (changed) { + ED_outliner_select_sync_from_pose_bone_tag(C); + return OPERATOR_FINISHED; } else { @@ -1172,6 +1185,8 @@ static int pose_select_mirror_exec(bContext *C, wmOperator *op) } MEM_freeN(objects); + ED_outliner_select_sync_from_pose_bone_tag(C); + return OPERATOR_FINISHED; } |