Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/object/object_select.c')
-rw-r--r--source/blender/editors/object/object_select.c54
1 files changed, 12 insertions, 42 deletions
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index 9da7154ae8d..b87c8500de0 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -89,44 +89,6 @@
/* Note: send a NC_SCENE|ND_OB_SELECT notifier yourself! (or
* or a NC_SCENE|ND_OB_VISIBLE in case of visibility toggling */
-void ED_base_object_select(BaseLegacy *base, short mode)
-{
- if (base) {
- if (mode == BA_SELECT) {
- if (!(base->object->restrictflag & OB_RESTRICT_SELECT))
- base->flag_legacy |= SELECT;
- }
- else if (mode == BA_DESELECT) {
- base->flag_legacy &= ~SELECT;
- }
- BKE_scene_base_flag_sync_from_base(base);
- }
-}
-
-/* also to set active NULL */
-void ED_base_object_activate(bContext *C, BaseLegacy *base)
-{
- Scene *scene = CTX_data_scene(C);
-
- /* sets scene->basact */
- BASACT = base;
-
- if (base) {
-#ifdef USE_WORKSPACE_MODE
- WorkSpace *workspace = CTX_wm_workspace(C);
-
- BKE_workspace_object_mode_set(workspace, base->object->mode);
-#endif
-
- /* XXX old signals, remember to handle notifiers now! */
- // select_actionchannel_by_name(base->object->action, "Object", 1);
-
- WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene);
- }
- else
- WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, NULL);
-}
-
void ED_object_base_select(Base *base, eObjectSelect_Mode mode)
{
if (mode == BA_INVERT) {
@@ -147,16 +109,24 @@ void ED_object_base_select(Base *base, eObjectSelect_Mode mode)
/* Never happens. */
break;
}
+ BKE_scene_object_base_flag_sync_from_base(base);
}
}
+/**
+ * Change active base, it includes the notifier
+ */
void ED_object_base_activate(bContext *C, Base *base)
{
- SceneLayer *sl = CTX_data_scene_layer(C);
- sl->basact = base;
+ SceneLayer *scene_layer = CTX_data_scene_layer(C);
+ scene_layer->basact = base;
if (base) {
- WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, sl);
+#ifdef USE_WORKSPACE_MODE
+ WorkSpace *workspace = CTX_wm_workspace(C);
+ BKE_workspace_object_mode_set(workspace, base->object->mode);
+#endif
+ WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene_layer);
}
else {
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, NULL);
@@ -659,7 +629,7 @@ static bool select_grouped_object_hooks(bContext *C, Object *ob)
if (hmd->object && !(hmd->object->flag & SELECT)) {
base = BKE_scene_layer_base_find(sl, hmd->object);
if (base && (BASE_SELECTABLE_NEW(base))) {
- ED_base_object_select(base, BA_SELECT);
+ ED_object_base_select(base, BA_SELECT);
changed = true;
}
}