diff options
Diffstat (limited to 'source/blender/editors/screen/screen_context.c')
-rw-r--r-- | source/blender/editors/screen/screen_context.c | 118 |
1 files changed, 69 insertions, 49 deletions
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index 3202dc68f37..c17a34f97b9 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -125,11 +125,11 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_dir_set(result, screen_context_dir); return 1; } - else if (CTX_data_equals(member, "scene")) { + if (CTX_data_equals(member, "scene")) { CTX_data_id_pointer_set(result, &scene->id); return 1; } - else if (CTX_data_equals(member, "visible_objects")) { + if (CTX_data_equals(member, "visible_objects")) { LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { if (BASE_VISIBLE(v3d, base)) { CTX_data_id_list_add(result, &base->object->id); @@ -138,7 +138,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } - else if (CTX_data_equals(member, "selectable_objects")) { + if (CTX_data_equals(member, "selectable_objects")) { LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { if (BASE_SELECTABLE(v3d, base)) { CTX_data_id_list_add(result, &base->object->id); @@ -147,7 +147,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } - else if (CTX_data_equals(member, "selected_objects")) { + if (CTX_data_equals(member, "selected_objects")) { LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { if (BASE_SELECTED(v3d, base)) { CTX_data_id_list_add(result, &base->object->id); @@ -156,7 +156,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } - else if (CTX_data_equals(member, "selected_editable_objects")) { + if (CTX_data_equals(member, "selected_editable_objects")) { LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { if (BASE_SELECTED_EDITABLE(v3d, base)) { CTX_data_id_list_add(result, &base->object->id); @@ -165,7 +165,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } - else if (CTX_data_equals(member, "editable_objects")) { + if (CTX_data_equals(member, "editable_objects")) { /* Visible + Editable, but not necessarily selected */ LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { if (BASE_EDITABLE(v3d, base)) { @@ -175,7 +175,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } - else if (CTX_data_equals(member, "objects_in_mode")) { + if (CTX_data_equals(member, "objects_in_mode")) { if (obact && (obact->mode != OB_MODE_OBJECT)) { FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, obact->type, obact->mode, ob_iter) { CTX_data_id_list_add(result, &ob_iter->id); @@ -185,7 +185,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } - else if (CTX_data_equals(member, "objects_in_mode_unique_data")) { + if (CTX_data_equals(member, "objects_in_mode_unique_data")) { if (obact && (obact->mode != OB_MODE_OBJECT)) { FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, obact->type, obact->mode, ob_iter) { ob_iter->id.tag |= LIB_TAG_DOIT; @@ -202,7 +202,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } - else if (CTX_data_equals(member, "visible_bones") || CTX_data_equals(member, "editable_bones")) { + if (CTX_data_equals(member, "visible_bones") || CTX_data_equals(member, "editable_bones")) { bArmature *arm = (obedit && obedit->type == OB_ARMATURE) ? obedit->data : NULL; EditBone *ebone, *flipbone = NULL; const bool editable_bones = CTX_data_equals(member, "editable_bones"); @@ -257,9 +257,10 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "selected_bones") || - CTX_data_equals(member, "selected_editable_bones")) { + if (CTX_data_equals(member, "selected_bones") || + CTX_data_equals(member, "selected_editable_bones")) { bArmature *arm = (obedit && obedit->type == OB_ARMATURE) ? obedit->data : NULL; EditBone *ebone, *flipbone = NULL; const bool selected_editable_bones = CTX_data_equals(member, "selected_editable_bones"); @@ -314,8 +315,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "visible_pose_bones")) { + if (CTX_data_equals(member, "visible_pose_bones")) { Object *obpose = BKE_object_pose_armature_get(obact); if (obpose && obpose->pose && obpose->data) { if (obpose != obact) { @@ -336,8 +338,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "selected_pose_bones")) { + if (CTX_data_equals(member, "selected_pose_bones")) { Object *obpose = BKE_object_pose_armature_get(obact); if (obpose && obpose->pose && obpose->data) { if (obpose != obact) { @@ -358,8 +361,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "selected_pose_bones_from_active_object")) { + if (CTX_data_equals(member, "selected_pose_bones_from_active_object")) { Object *obpose = BKE_object_pose_armature_get(obact); if (obpose && obpose->pose && obpose->data) { if (obpose != obact) { @@ -377,8 +381,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_bone")) { + if (CTX_data_equals(member, "active_bone")) { if (obact && obact->type == OB_ARMATURE) { bArmature *arm = obact->data; if (arm->edbo) { @@ -394,8 +399,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } } } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_pose_bone")) { + if (CTX_data_equals(member, "active_pose_bone")) { bPoseChannel *pchan; Object *obpose = BKE_object_pose_armature_get(obact); @@ -404,22 +410,23 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_pointer_set(result, &obpose->id, &RNA_PoseBone, pchan); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_object")) { + if (CTX_data_equals(member, "active_object")) { if (obact) { CTX_data_id_pointer_set(result, &obact->id); } return 1; } - else if (CTX_data_equals(member, "object")) { + if (CTX_data_equals(member, "object")) { if (obact) { CTX_data_id_pointer_set(result, &obact->id); } return 1; } - else if (CTX_data_equals(member, "edit_object")) { + if (CTX_data_equals(member, "edit_object")) { /* convenience for now, 1 object per scene in editmode */ if (obedit) { CTX_data_id_pointer_set(result, &obedit->id); @@ -427,49 +434,49 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } - else if (CTX_data_equals(member, "sculpt_object")) { + if (CTX_data_equals(member, "sculpt_object")) { if (obact && (obact->mode & OB_MODE_SCULPT)) { CTX_data_id_pointer_set(result, &obact->id); } return 1; } - else if (CTX_data_equals(member, "vertex_paint_object")) { + if (CTX_data_equals(member, "vertex_paint_object")) { if (obact && (obact->mode & OB_MODE_VERTEX_PAINT)) { CTX_data_id_pointer_set(result, &obact->id); } return 1; } - else if (CTX_data_equals(member, "weight_paint_object")) { + if (CTX_data_equals(member, "weight_paint_object")) { if (obact && (obact->mode & OB_MODE_WEIGHT_PAINT)) { CTX_data_id_pointer_set(result, &obact->id); } return 1; } - else if (CTX_data_equals(member, "image_paint_object")) { + if (CTX_data_equals(member, "image_paint_object")) { if (obact && (obact->mode & OB_MODE_TEXTURE_PAINT)) { CTX_data_id_pointer_set(result, &obact->id); } return 1; } - else if (CTX_data_equals(member, "particle_edit_object")) { + if (CTX_data_equals(member, "particle_edit_object")) { if (obact && (obact->mode & OB_MODE_PARTICLE_EDIT)) { CTX_data_id_pointer_set(result, &obact->id); } return 1; } - else if (CTX_data_equals(member, "pose_object")) { + if (CTX_data_equals(member, "pose_object")) { Object *obpose = BKE_object_pose_armature_get(obact); if (obpose) { CTX_data_id_pointer_set(result, &obpose->id); } return 1; } - else if (CTX_data_equals(member, "sequences")) { + if (CTX_data_equals(member, "sequences")) { Editing *ed = BKE_sequencer_editing_get(scene, false); if (ed) { Sequence *seq; @@ -479,8 +486,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "selected_sequences")) { + if (CTX_data_equals(member, "selected_sequences")) { Editing *ed = BKE_sequencer_editing_get(scene, false); if (ed) { Sequence *seq; @@ -492,8 +500,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "selected_editable_sequences")) { + if (CTX_data_equals(member, "selected_editable_sequences")) { Editing *ed = BKE_sequencer_editing_get(scene, false); if (ed) { Sequence *seq; @@ -505,8 +514,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "selected_nla_strips")) { + if (CTX_data_equals(member, "selected_nla_strips")) { bAnimContext ac; if (ANIM_animdata_get_context(C, &ac) != 0) { ListBase anim_data = {NULL, NULL}; @@ -530,8 +540,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "gpencil_data")) { + if (CTX_data_equals(member, "gpencil_data")) { /* FIXME: for some reason, CTX_data_active_object(C) returns NULL when called from these * situations (as outlined above - see Campbell's #ifdefs). * That causes the get_active function to fail when called from context. @@ -543,8 +554,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_id_pointer_set(result, &gpd->id); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "gpencil_data_owner")) { + if (CTX_data_equals(member, "gpencil_data_owner")) { /* Pointer to which data/datablock owns the reference to the Grease Pencil data being used * (as gpencil_data). */ bGPdata **gpd_ptr = NULL; @@ -557,16 +569,18 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "annotation_data")) { + if (CTX_data_equals(member, "annotation_data")) { bGPdata *gpd = ED_annotation_data_get_active_direct((ID *)screen, area, scene); if (gpd) { CTX_data_id_pointer_set(result, &gpd->id); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "annotation_data_owner")) { + if (CTX_data_equals(member, "annotation_data_owner")) { /* Pointer to which data/datablock owns the reference to the Grease Pencil data being used. */ bGPdata **gpd_ptr = NULL; PointerRNA ptr; @@ -578,8 +592,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_gpencil_layer")) { + if (CTX_data_equals(member, "active_gpencil_layer")) { bGPdata *gpd = ED_gpencil_data_get_active_direct(area, obact); if (gpd) { @@ -590,8 +605,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_annotation_layer")) { + if (CTX_data_equals(member, "active_annotation_layer")) { bGPdata *gpd = ED_annotation_data_get_active_direct((ID *)screen, area, scene); if (gpd) { @@ -602,8 +618,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_gpencil_frame")) { + if (CTX_data_equals(member, "active_gpencil_frame")) { bGPdata *gpd = ED_gpencil_data_get_active_direct(area, obact); if (gpd) { @@ -614,8 +631,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "visible_gpencil_layers")) { + if (CTX_data_equals(member, "visible_gpencil_layers")) { bGPdata *gpd = ED_gpencil_data_get_active_direct(area, obact); if (gpd) { @@ -629,8 +647,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "editable_gpencil_layers")) { + if (CTX_data_equals(member, "editable_gpencil_layers")) { bGPdata *gpd = ED_gpencil_data_get_active_direct(area, obact); if (gpd) { @@ -644,8 +663,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "editable_gpencil_strokes")) { + if (CTX_data_equals(member, "editable_gpencil_strokes")) { bGPdata *gpd = ED_gpencil_data_get_active_direct(area, obact); const bool is_multiedit = (bool)GPENCIL_MULTIEDIT_SESSIONS_ON(gpd); @@ -684,8 +704,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_operator")) { + if (CTX_data_equals(member, "active_operator")) { wmOperator *op = NULL; SpaceFile *sfile = CTX_wm_space_file(C); @@ -706,11 +727,11 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_pointer_set(result, NULL, &RNA_Operator, op); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "editable_fcurves") || - CTX_data_equals(member, "visible_fcurves") || - CTX_data_equals(member, "selected_editable_fcurves") || - CTX_data_equals(member, "selected_visible_fcurves")) { + if (CTX_data_equals(member, "editable_fcurves") || CTX_data_equals(member, "visible_fcurves") || + CTX_data_equals(member, "selected_editable_fcurves") || + CTX_data_equals(member, "selected_visible_fcurves")) { bAnimContext ac; if (ANIM_animdata_get_context(C, &ac) && ELEM(ac.spacetype, SPACE_ACTION, SPACE_GRAPH)) { @@ -740,8 +761,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } + return -1; /* found but not available */ } - else if (CTX_data_equals(member, "active_editable_fcurve")) { + if (CTX_data_equals(member, "active_editable_fcurve")) { bAnimContext ac; if (ANIM_animdata_get_context(C, &ac) && ELEM(ac.spacetype, SPACE_GRAPH)) { @@ -762,10 +784,8 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult ANIM_animdata_freelist(&anim_data); return 1; } - } - else { - return 0; /* not found */ + return -1; /* found but not available */ } - return -1; /* found but not available */ + return 0; /* not found */ } |