86 screen =
static_cast<bScreen *
>(screen->id.next))
130 sync_types->
object = !sequence_view;
133 sync_types->
sequence = sequence_view;
150 sync_types->
object = !sequence_view &&
216 GSet *selected_objects)
238 GSet *selected_ebones)
243 short bone_flag = ebone->
flag;
259 if (bone_flag != ebone->
flag) {
269 GSet *selected_pbones)
275 short bone_flag = pchan->
bone->
flag;
284 pchan->
bone->
flag &= ~BONE_SELECTED;
289 if (bone_flag != pchan->
bone->
flag) {
310 seq->
flag &= ~SELECT;
333 scene, view_layer, te, tselem, selected_items->
edit_bones);
348 scene, view_layer, &te->subtree, sync_types, selected_items);
372 outliner_sync_select_from_outliner_set_types(C, space_outliner, &sync_types);
377 selected_items_init(&selected_items);
379 outliner_sync_selection_from_outliner(
380 scene, view_layer, &space_outliner->
tree, &sync_types, &selected_items);
382 selected_items_free(&selected_items);
414 const bool is_selected = (base !=
nullptr) && ((base->
flag &
BASE_SELECTED) != 0);
416 if (base && (ob == obact)) {
420 tselem->
flag &= ~TSE_ACTIVE;
427 tselem->
flag &= ~TSE_SELECTED;
437 if (ebone == ebone_active) {
441 tselem->
flag &= ~TSE_ACTIVE;
448 tselem->
flag &= ~TSE_SELECTED;
459 if (pchan == pchan_active) {
463 tselem->
flag &= ~TSE_ACTIVE;
470 tselem->
flag &= ~TSE_SELECTED;
481 if (seq == sequence_active) {
485 tselem->
flag &= ~TSE_ACTIVE;
492 tselem->
flag &= ~TSE_SELECTED;
544 scene, view_layer, space_outliner, &te->subtree, active_data, sync_types);
565 C, space_outliner, &sync_types);
576 scene, view_layer, space_outliner, &space_outliner->
tree, &active_data, &sync_types);
C++ functions to deal with Armature collections (i.e. the successor of bone layers).
#define PBONE_SELECTABLE(arm, bone)
bPoseChannel * CTX_data_active_pose_bone(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
EditBone * CTX_data_active_bone(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
Base * BKE_view_layer_base_find(ViewLayer *view_layer, Object *ob)
Object * BKE_view_layer_edit_object_get(const ViewLayer *view_layer)
bool BLI_gset_haskey(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
unsigned int BLI_ghashutil_ptrhash(const void *key)
GSet * BLI_gset_new(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghashutil_ptrcmp(const void *a, const void *b)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_add(GSet *gs, void *key)
#define LISTBASE_FOREACH(type, var, list)
void DEG_id_tag_update(ID *id, unsigned int flags)
#define BASE_SELECTED(v3d, base)
#define BASE_SELECTABLE(v3d, base)
@ WM_OUTLINER_SYNC_SELECT_FROM_SEQUENCE
@ WM_OUTLINER_SYNC_SELECT_FROM_OBJECT
@ WM_OUTLINER_SYNC_SELECT_FROM_EDIT_BONE
@ WM_OUTLINER_SYNC_SELECT_FROM_POSE_BONE
#define WM_OUTLINER_SYNC_SELECT_FROM_ALL
#define EBONE_SELECTABLE(arm, ebone)
void ED_armature_ebone_select_set(EditBone *ebone, bool select)
Sequence & get_sequence() const
void base_select(Base *base, eObjectSelect_Mode mode)
static void add_selected_item(GSet *selected, void *data)
static bool is_edit_bone_selected(GSet *selected_ebones, EditBone *ebone)
static void outliner_select_sync_from_pose_bone(bPoseChannel *pchan_active, TreeElement *te, TreeStoreElem *tselem)
static void outliner_sync_select_from_outliner_set_types(bContext *C, SpaceOutliner *space_outliner, SyncSelectTypes *sync_types)
static void outliner_select_sync_from_sequence(Sequence *sequence_active, const TreeElement *te)
static void outliner_select_sync_to_sequence(Scene *scene, const TreeElement *te)
static void outliner_select_sync_from_object(const Scene *scene, ViewLayer *view_layer, Object *obact, TreeElement *te, TreeStoreElem *tselem)
static void selected_items_init(SelectedItems *selected_items)
static void outliner_select_sync_from_edit_bone(EditBone *ebone_active, TreeElement *te, TreeStoreElem *tselem)
static void outliner_select_sync_to_pose_bone(TreeElement *te, TreeStoreElem *tselem, GSet *selected_pbones)
static bool is_object_selected(GSet *selected_objects, Base *base)
static void get_sync_select_active_data(const bContext *C, SyncSelectActiveData *active_data)
static void outliner_sync_selection_to_outliner(const Scene *scene, ViewLayer *view_layer, SpaceOutliner *space_outliner, ListBase *tree, SyncSelectActiveData *active_data, const SyncSelectTypes *sync_types)
void outliner_viewcontext_init(const bContext *C, TreeViewContext *tvc)
static void selected_items_free(SelectedItems *selected_items)
static void outliner_select_sync_to_edit_bone(const Scene *scene, ViewLayer *view_layer, TreeElement *te, TreeStoreElem *tselem, GSet *selected_ebones)
void outliner_sync_selection(const bContext *C, SpaceOutliner *space_outliner)
TreeElementT * tree_element_cast(const TreeElement *te)
static void outliner_select_sync_to_object(ViewLayer *view_layer, TreeElement *te, TreeStoreElem *tselem, GSet *selected_objects)
static void outliner_sync_selection_from_outliner(Scene *scene, ViewLayer *view_layer, ListBase *tree, const SyncSelectTypes *sync_types, SelectedItems *selected_items)
static bool is_pose_bone_selected(GSet *selected_pbones, bPoseChannel *pchan)
static bool outliner_sync_select_to_outliner_set_types(const bContext *C, SpaceOutliner *space_outliner, SyncSelectTypes *sync_types)
void ED_outliner_select_sync_from_object_tag(bContext *C)
void ED_outliner_select_sync_from_edit_bone_tag(bContext *C)
void ED_outliner_select_sync_from_pose_bone_tag(bContext *C)
void ED_outliner_select_sync_from_outliner(bContext *C, SpaceOutliner *space_outliner)
void ED_outliner_select_sync_from_all_tag(bContext *C)
void ED_outliner_select_sync_from_sequence_tag(bContext *C)
bool ED_outliner_select_sync_is_dirty(const bContext *C)
void ED_outliner_select_sync_flag_outliners(const bContext *C)
void SEQ_select_active_set(Scene *scene, Sequence *seq)
Sequence * SEQ_select_active_get(const Scene *scene)
bPoseChannel * pose_channel
short outliner_sync_select_dirty
void WM_main_add_notifier(uint type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)