Cleanup: Use enum for return values in context callbacks

Define enum `eContextResult` and use its values for returns, instead of
just returning 1, 0, or -1 (and always having some comment that explains
what -1 means).

This also cleans up the mixup between returning `0` and `false`, and `1`
and `true`. An inconsistency was discovered during this cleanup, and
marked with `TODO(sybren)`. It's not fixed here, as it would consititute
a functional change.

The enum isn't used everywhere, as enums in C and C++ can have different
storage sizes. To prevent issues, callback functions are still declared
as returning`int`. To at least make things easier to understand for
humans, I marked those with `int /*eContextResult*/`.

This is a followup of D9090, and is intended to unify how context
callbacks return values. This will make it easier to extend the approach
in D9090 to those functions.

No functional changes.

Differential Revision: https://developer.blender.org/D9095
This commit is contained in:
Sybren A. Stüvel 2020-10-02 18:56:25 +02:00
parent 0db98b214d
commit 90a27d5aa9
Notes: blender-bot 2023-02-14 06:00:46 +01:00
Referenced by commit 9d2222b7d1, Cleanup: Use enum for return type
12 changed files with 267 additions and 229 deletions

View File

@ -74,9 +74,26 @@ typedef struct bContext bContext;
struct bContextDataResult;
typedef struct bContextDataResult bContextDataResult;
typedef int (*bContextDataCallback)(const bContext *C,
const char *member,
bContextDataResult *result);
/* Result of context lookups.
* The specific values are important, and used implicitly in ctx_data_get(). Some functions also
* still accept/return `int` instead, to ensure that the compiler uses the correct storage size
* when mixing C/C++ code. */
typedef enum eContextResult {
/* The context member was found, and its data is available. */
CTX_RESULT_OK = 1,
/* The context member was not found. */
CTX_RESULT_MEMBER_NOT_FOUND = 0,
/* The context member was found, but its data is not available.
* For example, "active_bone" is a valid context member, but has not data in Object mode. */
CTX_RESULT_NO_DATA = -1,
} eContextResult;
/* Function mapping a context member name to its value. */
typedef int /*eContextResult*/ (*bContextDataCallback)(const bContext *C,
const char *member,
bContextDataResult *result);
typedef struct bContextStoreEntry {
struct bContextStoreEntry *next, *prev;
@ -213,7 +230,7 @@ ListBase CTX_data_dir_get_ex(const bContext *C,
const bool use_rna,
const bool use_all);
ListBase CTX_data_dir_get(const bContext *C);
int CTX_data_get(
int /*eContextResult*/ CTX_data_get(
const bContext *C, const char *member, PointerRNA *r_ptr, ListBase *r_lb, short *r_type);
void CTX_data_id_pointer_set(bContextDataResult *result, struct ID *id);

View File

@ -26,6 +26,8 @@
#include "RNA_types.h"
#include "BKE_context.h"
#ifdef __cplusplus
extern "C" {
#endif
@ -106,7 +108,7 @@ typedef struct SpaceType {
void (*gizmos)(void);
/* return context data */
int (*context)(const struct bContext *C, const char *member, struct bContextDataResult *result);
bContextDataCallback context;
/* Used when we want to replace an ID by another (or NULL). */
void (*id_remap)(struct ScrArea *area,
@ -181,7 +183,7 @@ typedef struct ARegionType {
void (*cursor)(struct wmWindow *win, struct ScrArea *area, struct ARegion *region);
/* return context data */
int (*context)(const struct bContext *C, const char *member, struct bContextDataResult *result);
bContextDataCallback context;
/* Is called whenever the current visible View2D's region changes.
*

View File

@ -294,7 +294,7 @@ static void *ctx_wm_python_context_get(const bContext *C,
return fall_through;
}
static int ctx_data_get(bContext *C, const char *member, bContextDataResult *result)
static eContextResult ctx_data_get(bContext *C, const char *member, bContextDataResult *result)
{
bScreen *screen;
ScrArea *area;
@ -374,7 +374,7 @@ static void *ctx_data_pointer_get(const bContext *C, const char *member)
{
bContextDataResult result;
if (C && ctx_data_get((bContext *)C, member, &result) == 1) {
if (C && ctx_data_get((bContext *)C, member, &result) == CTX_RESULT_OK) {
BLI_assert(result.type == CTX_DATA_TYPE_POINTER);
return result.ptr.data;
}
@ -391,7 +391,7 @@ static int ctx_data_pointer_verify(const bContext *C, const char *member, void *
*pointer = NULL;
return 1;
}
if (ctx_data_get((bContext *)C, member, &result) == 1) {
if (ctx_data_get((bContext *)C, member, &result) == CTX_RESULT_OK) {
BLI_assert(result.type == CTX_DATA_TYPE_POINTER);
*pointer = result.ptr.data;
return 1;
@ -405,7 +405,7 @@ static int ctx_data_collection_get(const bContext *C, const char *member, ListBa
{
bContextDataResult result;
if (ctx_data_get((bContext *)C, member, &result) == 1) {
if (ctx_data_get((bContext *)C, member, &result) == CTX_RESULT_OK) {
BLI_assert(result.type == CTX_DATA_TYPE_COLLECTION);
*list = result.list;
return 1;
@ -453,7 +453,7 @@ PointerRNA CTX_data_pointer_get(const bContext *C, const char *member)
{
bContextDataResult result;
if (ctx_data_get((bContext *)C, member, &result) == 1) {
if (ctx_data_get((bContext *)C, member, &result) == CTX_RESULT_OK) {
BLI_assert(result.type == CTX_DATA_TYPE_POINTER);
return result.ptr;
}
@ -495,7 +495,7 @@ ListBase CTX_data_collection_get(const bContext *C, const char *member)
{
bContextDataResult result;
if (ctx_data_get((bContext *)C, member, &result) == 1) {
if (ctx_data_get((bContext *)C, member, &result) == CTX_RESULT_OK) {
BLI_assert(result.type == CTX_DATA_TYPE_COLLECTION);
return result.list;
}
@ -504,14 +504,13 @@ ListBase CTX_data_collection_get(const bContext *C, const char *member)
return list;
}
/* 1:found, -1:found but not set, 0:not found */
int CTX_data_get(
int /*eContextResult*/ CTX_data_get(
const bContext *C, const char *member, PointerRNA *r_ptr, ListBase *r_lb, short *r_type)
{
bContextDataResult result;
int ret = ctx_data_get((bContext *)C, member, &result);
eContextResult ret = ctx_data_get((bContext *)C, member, &result);
if (ret == 1) {
if (ret == CTX_RESULT_OK) {
*r_ptr = result.ptr;
*r_lb = result.list;
*r_type = result.type;

View File

@ -114,23 +114,16 @@ const char *screen_context_dir[] = {
/* Each function `screen_ctx_XXX()` will be called when the screen context "XXX" is requested.
* ensure_ed_screen_context_functions() is responsible for creating the hash map from context
* member name to function.
*
* Each function returns:
* 1 for "the member name was found and returned data is valid"
* 0 for "the member name was not found"
* -1 for "the member name was found but data is not available"
*
* */
* member name to function. */
static int screen_ctx_scene(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_scene(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
Scene *scene = WM_window_get_active_scene(win);
CTX_data_id_pointer_set(result, &scene->id);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_visible_objects(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_visible_objects(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -142,9 +135,9 @@ static int screen_ctx_visible_objects(const bContext *C, bContextDataResult *res
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_selectable_objects(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selectable_objects(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -156,9 +149,9 @@ static int screen_ctx_selectable_objects(const bContext *C, bContextDataResult *
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_selected_objects(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_objects(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -170,9 +163,10 @@ static int screen_ctx_selected_objects(const bContext *C, bContextDataResult *re
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_selected_editable_objects(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_editable_objects(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -184,9 +178,9 @@ static int screen_ctx_selected_editable_objects(const bContext *C, bContextDataR
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_editable_objects(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_editable_objects(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -199,9 +193,9 @@ static int screen_ctx_editable_objects(const bContext *C, bContextDataResult *re
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_objects_in_mode(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_objects_in_mode(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -215,9 +209,10 @@ static int screen_ctx_objects_in_mode(const bContext *C, bContextDataResult *res
FOREACH_OBJECT_IN_MODE_END;
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_objects_in_mode_unique_data(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_objects_in_mode_unique_data(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -238,11 +233,11 @@ static int screen_ctx_objects_in_mode_unique_data(const bContext *C, bContextDat
FOREACH_OBJECT_IN_MODE_END;
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_visible_or_editable_bones_(const bContext *C,
bContextDataResult *result,
const bool editable_bones)
static eContextResult screen_ctx_visible_or_editable_bones_(const bContext *C,
bContextDataResult *result,
const bool editable_bones)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -299,21 +294,21 @@ static int screen_ctx_visible_or_editable_bones_(const bContext *C,
MEM_freeN(objects);
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_visible_bones(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_visible_bones(const bContext *C, bContextDataResult *result)
{
return screen_ctx_visible_or_editable_bones_(C, result, false);
}
static int screen_ctx_editable_bones(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_editable_bones(const bContext *C, bContextDataResult *result)
{
return screen_ctx_visible_or_editable_bones_(C, result, true);
}
static int screen_ctx_selected_bones_(const bContext *C,
bContextDataResult *result,
const bool selected_editable_bones)
static eContextResult screen_ctx_selected_bones_(const bContext *C,
bContextDataResult *result,
const bool selected_editable_bones)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -369,19 +364,20 @@ static int screen_ctx_selected_bones_(const bContext *C,
MEM_freeN(objects);
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_selected_bones(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_bones(const bContext *C, bContextDataResult *result)
{
return screen_ctx_selected_bones_(C, result, false);
}
static int screen_ctx_selected_editable_bones(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_editable_bones(const bContext *C,
bContextDataResult *result)
{
return screen_ctx_selected_bones_(C, result, true);
}
static int screen_ctx_visible_pose_bones(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_visible_pose_bones(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -405,11 +401,11 @@ static int screen_ctx_visible_pose_bones(const bContext *C, bContextDataResult *
FOREACH_OBJECT_IN_MODE_END;
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_selected_pose_bones(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_pose_bones(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
@ -433,12 +429,12 @@ static int screen_ctx_selected_pose_bones(const bContext *C, bContextDataResult
FOREACH_OBJECT_IN_MODE_END;
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_selected_pose_bones_from_active_object(const bContext *C,
bContextDataResult *result)
static eContextResult screen_ctx_selected_pose_bones_from_active_object(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -458,11 +454,11 @@ static int screen_ctx_selected_pose_bones_from_active_object(const bContext *C,
FOREACH_PCHAN_SELECTED_IN_OBJECT_END;
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_active_bone(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_bone(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -472,19 +468,19 @@ static int screen_ctx_active_bone(const bContext *C, bContextDataResult *result)
if (arm->edbo) {
if (arm->act_edbone) {
CTX_data_pointer_set(result, &arm->id, &RNA_EditBone, arm->act_edbone);
return 1;
return CTX_RESULT_OK;
}
}
else {
if (arm->act_bone) {
CTX_data_pointer_set(result, &arm->id, &RNA_Bone, arm->act_bone);
return 1;
return CTX_RESULT_OK;
}
}
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_active_pose_bone(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_pose_bone(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -495,11 +491,11 @@ static int screen_ctx_active_pose_bone(const bContext *C, bContextDataResult *re
pchan = BKE_pose_channel_active(obpose);
if (pchan) {
CTX_data_pointer_set(result, &obpose->id, &RNA_PoseBone, pchan);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_active_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -509,9 +505,9 @@ static int screen_ctx_active_object(const bContext *C, bContextDataResult *resul
CTX_data_id_pointer_set(result, &obact->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -521,9 +517,9 @@ static int screen_ctx_object(const bContext *C, bContextDataResult *result)
CTX_data_id_pointer_set(result, &obact->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_edit_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_edit_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -533,9 +529,9 @@ static int screen_ctx_edit_object(const bContext *C, bContextDataResult *result)
CTX_data_id_pointer_set(result, &obedit->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_sculpt_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_sculpt_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -545,9 +541,9 @@ static int screen_ctx_sculpt_object(const bContext *C, bContextDataResult *resul
CTX_data_id_pointer_set(result, &obact->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_vertex_paint_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_vertex_paint_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -556,9 +552,9 @@ static int screen_ctx_vertex_paint_object(const bContext *C, bContextDataResult
CTX_data_id_pointer_set(result, &obact->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_weight_paint_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_weight_paint_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -567,9 +563,9 @@ static int screen_ctx_weight_paint_object(const bContext *C, bContextDataResult
CTX_data_id_pointer_set(result, &obact->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_image_paint_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_image_paint_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -578,9 +574,10 @@ static int screen_ctx_image_paint_object(const bContext *C, bContextDataResult *
CTX_data_id_pointer_set(result, &obact->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_particle_edit_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_particle_edit_object(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -589,9 +586,9 @@ static int screen_ctx_particle_edit_object(const bContext *C, bContextDataResult
CTX_data_id_pointer_set(result, &obact->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_pose_object(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_pose_object(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
@ -600,9 +597,9 @@ static int screen_ctx_pose_object(const bContext *C, bContextDataResult *result)
if (obpose) {
CTX_data_id_pointer_set(result, &obpose->id);
}
return 1;
return CTX_RESULT_OK;
}
static int screen_ctx_sequences(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_sequences(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
Scene *scene = WM_window_get_active_scene(win);
@ -612,11 +609,11 @@ static int screen_ctx_sequences(const bContext *C, bContextDataResult *result)
CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq);
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_selected_sequences(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_sequences(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
Scene *scene = WM_window_get_active_scene(win);
@ -628,11 +625,12 @@ static int screen_ctx_selected_sequences(const bContext *C, bContextDataResult *
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_selected_editable_sequences(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_editable_sequences(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
Scene *scene = WM_window_get_active_scene(win);
@ -644,11 +642,11 @@ static int screen_ctx_selected_editable_sequences(const bContext *C, bContextDat
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_selected_nla_strips(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_nla_strips(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
Scene *scene = WM_window_get_active_scene(win);
@ -671,11 +669,11 @@ static int screen_ctx_selected_nla_strips(const bContext *C, bContextDataResult
ANIM_animdata_freelist(&anim_data);
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_gpencil_data(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_gpencil_data(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ScrArea *area = CTX_wm_area(C);
@ -690,11 +688,11 @@ static int screen_ctx_gpencil_data(const bContext *C, bContextDataResult *result
if (gpd) {
CTX_data_id_pointer_set(result, &gpd->id);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_gpencil_data_owner(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_gpencil_data_owner(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ScrArea *area = CTX_wm_area(C);
@ -710,11 +708,11 @@ static int screen_ctx_gpencil_data_owner(const bContext *C, bContextDataResult *
if (gpd_ptr) {
CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_annotation_data(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_annotation_data(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
bScreen *screen = CTX_wm_screen(C);
@ -724,11 +722,12 @@ static int screen_ctx_annotation_data(const bContext *C, bContextDataResult *res
if (gpd) {
CTX_data_id_pointer_set(result, &gpd->id);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_annotation_data_owner(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_annotation_data_owner(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
bScreen *screen = CTX_wm_screen(C);
@ -743,11 +742,12 @@ static int screen_ctx_annotation_data_owner(const bContext *C, bContextDataResul
if (gpd_ptr) {
CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_active_gpencil_layer(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_gpencil_layer(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ScrArea *area = CTX_wm_area(C);
@ -760,12 +760,13 @@ static int screen_ctx_active_gpencil_layer(const bContext *C, bContextDataResult
if (gpl) {
CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl);
return 1;
return CTX_RESULT_OK;
}
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_active_annotation_layer(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_annotation_layer(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
bScreen *screen = CTX_wm_screen(C);
@ -778,12 +779,13 @@ static int screen_ctx_active_annotation_layer(const bContext *C, bContextDataRes
if (gpl) {
CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl);
return 1;
return CTX_RESULT_OK;
}
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_active_gpencil_frame(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_gpencil_frame(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ScrArea *area = CTX_wm_area(C);
@ -796,12 +798,13 @@ static int screen_ctx_active_gpencil_frame(const bContext *C, bContextDataResult
if (gpl) {
CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl->actframe);
return 1;
return CTX_RESULT_OK;
}
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_visible_gpencil_layers(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_visible_gpencil_layers(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ScrArea *area = CTX_wm_area(C);
@ -816,11 +819,12 @@ static int screen_ctx_visible_gpencil_layers(const bContext *C, bContextDataResu
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_editable_gpencil_layers(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_editable_gpencil_layers(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ScrArea *area = CTX_wm_area(C);
@ -835,11 +839,12 @@ static int screen_ctx_editable_gpencil_layers(const bContext *C, bContextDataRes
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_editable_gpencil_strokes(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_editable_gpencil_strokes(const bContext *C,
bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
ScrArea *area = CTX_wm_area(C);
@ -879,11 +884,11 @@ static int screen_ctx_editable_gpencil_strokes(const bContext *C, bContextDataRe
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_active_operator(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_operator(const bContext *C, bContextDataResult *result)
{
wmOperator *op = NULL;
@ -903,13 +908,13 @@ static int screen_ctx_active_operator(const bContext *C, bContextDataResult *res
if (op && op->ptr) {
CTX_data_pointer_set(result, NULL, &RNA_Operator, op);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_sel_edit_fcurves_(const bContext *C,
bContextDataResult *result,
const int extra_filter)
static eContextResult screen_ctx_sel_edit_fcurves_(const bContext *C,
bContextDataResult *result,
const int extra_filter)
{
bAnimContext ac;
@ -932,27 +937,30 @@ static int screen_ctx_sel_edit_fcurves_(const bContext *C,
ANIM_animdata_freelist(&anim_data);
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
static int screen_ctx_editable_fcurves(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_editable_fcurves(const bContext *C, bContextDataResult *result)
{
return screen_ctx_sel_edit_fcurves_(C, result, ANIMFILTER_FOREDIT);
}
static int screen_ctx_visible_fcurves(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_visible_fcurves(const bContext *C, bContextDataResult *result)
{
return screen_ctx_sel_edit_fcurves_(C, result, 0);
}
static int screen_ctx_selected_editable_fcurves(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_editable_fcurves(const bContext *C,
bContextDataResult *result)
{
return screen_ctx_sel_edit_fcurves_(C, result, ANIMFILTER_SEL | ANIMFILTER_FOREDIT);
}
static int screen_ctx_selected_visible_fcurves(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_selected_visible_fcurves(const bContext *C,
bContextDataResult *result)
{
return screen_ctx_sel_edit_fcurves_(C, result, ANIMFILTER_SEL);
}
static int screen_ctx_active_editable_fcurve(const bContext *C, bContextDataResult *result)
static eContextResult screen_ctx_active_editable_fcurve(const bContext *C,
bContextDataResult *result)
{
bAnimContext ac;
@ -972,9 +980,9 @@ static int screen_ctx_active_editable_fcurve(const bContext *C, bContextDataResu
}
ANIM_animdata_freelist(&anim_data);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
/* Registry of context callback functions. */
@ -1057,13 +1065,13 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
{
if (CTX_data_dir(member)) {
CTX_data_dir_set(result, screen_context_dir);
return 1;
return CTX_RESULT_OK;
}
ensure_ed_screen_context_functions();
context_callback callback = BLI_ghash_lookup(ed_screen_context_functions, member);
if (callback == NULL) {
return 0; /* not found */
return CTX_RESULT_MEMBER_NOT_FOUND;
}
return callback(C, result);

View File

@ -780,17 +780,19 @@ const char *buttons_context_dir[] = {
NULL,
};
int buttons_context(const bContext *C, const char *member, bContextDataResult *result)
int /*eContextResult*/ buttons_context(const bContext *C,
const char *member,
bContextDataResult *result)
{
SpaceProperties *sbuts = CTX_wm_space_properties(C);
ButsContextPath *path = sbuts ? sbuts->path : NULL;
if (!path) {
return 0;
return CTX_RESULT_MEMBER_NOT_FOUND;
}
if (sbuts->mainb == BCONTEXT_TOOL) {
return 0;
return CTX_RESULT_MEMBER_NOT_FOUND;
}
/* here we handle context, getting data from precomputed path */
@ -803,7 +805,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
else {
CTX_data_dir_set(result, buttons_context_dir);
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "scene")) {
/* Do not return one here if scene not found in path,
@ -812,67 +814,67 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
}
if (CTX_data_equals(member, "world")) {
set_pointer_type(path, result, &RNA_World);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "object")) {
set_pointer_type(path, result, &RNA_Object);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "mesh")) {
set_pointer_type(path, result, &RNA_Mesh);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "armature")) {
set_pointer_type(path, result, &RNA_Armature);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "lattice")) {
set_pointer_type(path, result, &RNA_Lattice);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "curve")) {
set_pointer_type(path, result, &RNA_Curve);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "meta_ball")) {
set_pointer_type(path, result, &RNA_MetaBall);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "light")) {
set_pointer_type(path, result, &RNA_Light);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "camera")) {
set_pointer_type(path, result, &RNA_Camera);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "speaker")) {
set_pointer_type(path, result, &RNA_Speaker);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "lightprobe")) {
set_pointer_type(path, result, &RNA_LightProbe);
return 1;
return CTX_RESULT_OK;
}
#ifdef WITH_HAIR_NODES
if (CTX_data_equals(member, "hair")) {
set_pointer_type(path, result, &RNA_Hair);
return 1;
return CTX_RESULT_OK;
}
#endif
#ifdef WITH_PARTICLE_NODES
if (CTX_data_equals(member, "pointcloud")) {
set_pointer_type(path, result, &RNA_PointCloud);
return 1;
return CTX_RESULT_OK;
}
#endif
if (CTX_data_equals(member, "volume")) {
set_pointer_type(path, result, &RNA_Volume);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "material")) {
set_pointer_type(path, result, &RNA_Material);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "texture")) {
ButsContextTexture *ct = sbuts->texuser;
@ -881,7 +883,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
CTX_data_pointer_set(result, &ct->texture->id, &RNA_Texture, ct->texture);
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "material_slot")) {
PointerRNA *ptr = get_pointer_type(path, &RNA_Object);
@ -899,7 +901,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
}
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "texture_user")) {
ButsContextTexture *ct = sbuts->texuser;
@ -913,7 +915,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
CTX_data_pointer_set(result, user->ptr.owner_id, user->ptr.type, user->ptr.data);
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "texture_user_property")) {
ButsContextTexture *ct = sbuts->texuser;
@ -927,7 +929,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
CTX_data_pointer_set(result, NULL, &RNA_Property, user->prop);
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "texture_node")) {
ButsContextTexture *ct = sbuts->texuser;
@ -938,9 +940,9 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
CTX_data_pointer_set(result, &ct->user->ntree->id, &RNA_Node, ct->user->node);
}
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
if (CTX_data_equals(member, "texture_slot")) {
ButsContextTexture *ct = sbuts->texuser;
@ -967,23 +969,23 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
}
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "bone")) {
set_pointer_type(path, result, &RNA_Bone);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "edit_bone")) {
set_pointer_type(path, result, &RNA_EditBone);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "pose_bone")) {
set_pointer_type(path, result, &RNA_PoseBone);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "particle_system")) {
set_pointer_type(path, result, &RNA_ParticleSystem);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "particle_system_editable")) {
if (PE_poll((bContext *)C)) {
@ -992,7 +994,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
else {
CTX_data_pointer_set(result, NULL, &RNA_ParticleSystem, NULL);
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "particle_settings")) {
/* only available when pinned */
@ -1000,7 +1002,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
if (ptr && ptr->data) {
CTX_data_pointer_set(result, ptr->owner_id, &RNA_ParticleSettings, ptr->data);
return 1;
return CTX_RESULT_OK;
}
/* get settings from active particle system instead */
@ -1009,11 +1011,11 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
if (ptr && ptr->data) {
ParticleSettings *part = ((ParticleSystem *)ptr->data)->part;
CTX_data_pointer_set(result, ptr->owner_id, &RNA_ParticleSettings, part);
return 1;
return CTX_RESULT_OK;
}
set_pointer_type(path, result, &RNA_ParticleSettings);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "cloth")) {
PointerRNA *ptr = get_pointer_type(path, &RNA_Object);
@ -1022,9 +1024,9 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
Object *ob = ptr->data;
ModifierData *md = BKE_modifiers_findby_type(ob, eModifierType_Cloth);
CTX_data_pointer_set(result, &ob->id, &RNA_ClothModifier, md);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
if (CTX_data_equals(member, "soft_body")) {
PointerRNA *ptr = get_pointer_type(path, &RNA_Object);
@ -1033,9 +1035,9 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
Object *ob = ptr->data;
ModifierData *md = BKE_modifiers_findby_type(ob, eModifierType_Softbody);
CTX_data_pointer_set(result, &ob->id, &RNA_SoftBodyModifier, md);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
if (CTX_data_equals(member, "fluid")) {
@ -1045,9 +1047,9 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
Object *ob = ptr->data;
ModifierData *md = BKE_modifiers_findby_type(ob, eModifierType_Fluid);
CTX_data_pointer_set(result, &ob->id, &RNA_FluidModifier, md);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
if (CTX_data_equals(member, "collision")) {
PointerRNA *ptr = get_pointer_type(path, &RNA_Object);
@ -1056,13 +1058,13 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
Object *ob = ptr->data;
ModifierData *md = BKE_modifiers_findby_type(ob, eModifierType_Collision);
CTX_data_pointer_set(result, &ob->id, &RNA_CollisionModifier, md);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
if (CTX_data_equals(member, "brush")) {
set_pointer_type(path, result, &RNA_Brush);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "dynamic_paint")) {
PointerRNA *ptr = get_pointer_type(path, &RNA_Object);
@ -1071,19 +1073,19 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
Object *ob = ptr->data;
ModifierData *md = BKE_modifiers_findby_type(ob, eModifierType_DynamicPaint);
CTX_data_pointer_set(result, &ob->id, &RNA_DynamicPaintModifier, md);
return 1;
return CTX_RESULT_OK;
}
return -1; /* found but not available */
return CTX_RESULT_NO_DATA;
}
if (CTX_data_equals(member, "line_style")) {
set_pointer_type(path, result, &RNA_FreestyleLineStyle);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "gpencil")) {
set_pointer_type(path, result, &RNA_GreasePencil);
return 1;
return CTX_RESULT_OK;
}
return 0; /* not found */
return CTX_RESULT_MEMBER_NOT_FOUND;
}
/************************* Drawing the Path ************************/

View File

@ -575,29 +575,31 @@ static void clip_keymap(struct wmKeyConfig *keyconf)
extern const char *clip_context_dir[]; /* quiet warning. */
const char *clip_context_dir[] = {"edit_movieclip", "edit_mask", NULL};
static int clip_context(const bContext *C, const char *member, bContextDataResult *result)
static int /*eContextResult*/ clip_context(const bContext *C,
const char *member,
bContextDataResult *result)
{
SpaceClip *sc = CTX_wm_space_clip(C);
if (CTX_data_dir(member)) {
CTX_data_dir_set(result, clip_context_dir);
return true;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "edit_movieclip")) {
if (sc->clip) {
CTX_data_id_pointer_set(result, &sc->clip->id);
}
return true;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "edit_mask")) {
if (sc->mask_info.mask) {
CTX_data_id_pointer_set(result, &sc->mask_info.mask->id);
}
return true;
return CTX_RESULT_OK;
}
return false;
return CTX_RESULT_MEMBER_NOT_FOUND;
}
/* dropboxes */

View File

@ -442,25 +442,28 @@ static void image_listener(wmWindow *win, ScrArea *area, wmNotifier *wmn, Scene
const char *image_context_dir[] = {"edit_image", "edit_mask", NULL};
static int image_context(const bContext *C, const char *member, bContextDataResult *result)
static int /*eContextResult*/ image_context(const bContext *C,
const char *member,
bContextDataResult *result)
{
SpaceImage *sima = CTX_wm_space_image(C);
if (CTX_data_dir(member)) {
CTX_data_dir_set(result, image_context_dir);
/* TODO(sybren): return CTX_RESULT_OK; */
}
else if (CTX_data_equals(member, "edit_image")) {
CTX_data_id_pointer_set(result, (ID *)ED_space_image(sima));
return 1;
return CTX_RESULT_OK;
}
else if (CTX_data_equals(member, "edit_mask")) {
Mask *mask = ED_space_image_get_mask(sima);
if (mask) {
CTX_data_id_pointer_set(result, &mask->id);
}
return true;
return CTX_RESULT_OK;
}
return 0;
return CTX_RESULT_MEMBER_NOT_FOUND;
}
static void IMAGE_GGT_gizmo2d(wmGizmoGroupType *gzgt)

View File

@ -776,14 +776,15 @@ static void node_region_listener(wmWindow *UNUSED(win),
const char *node_context_dir[] = {
"selected_nodes", "active_node", "light", "material", "world", NULL};
static int node_context(const bContext *C, const char *member, bContextDataResult *result)
static int /*eContextResult*/ node_context(const bContext *C,
const char *member,
bContextDataResult *result)
{
SpaceNode *snode = CTX_wm_space_node(C);
if (CTX_data_dir(member)) {
CTX_data_dir_set(result, node_context_dir);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "selected_nodes")) {
bNode *node;
@ -796,7 +797,7 @@ static int node_context(const bContext *C, const char *member, bContextDataResul
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "active_node")) {
if (snode->edittree) {
@ -805,7 +806,7 @@ static int node_context(const bContext *C, const char *member, bContextDataResul
}
CTX_data_type_set(result, CTX_DATA_TYPE_POINTER);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "node_previews")) {
if (snode->nodetree) {
@ -814,28 +815,28 @@ static int node_context(const bContext *C, const char *member, bContextDataResul
}
CTX_data_type_set(result, CTX_DATA_TYPE_POINTER);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "material")) {
if (snode->id && GS(snode->id->name) == ID_MA) {
CTX_data_id_pointer_set(result, snode->id);
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "light")) {
if (snode->id && GS(snode->id->name) == ID_LA) {
CTX_data_id_pointer_set(result, snode->id);
}
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "world")) {
if (snode->id && GS(snode->id->name) == ID_WO) {
CTX_data_id_pointer_set(result, snode->id);
}
return 1;
return CTX_RESULT_OK;
}
return 0;
return CTX_RESULT_MEMBER_NOT_FOUND;
}
static void node_widgets(void)

View File

@ -457,24 +457,26 @@ static void sequencer_dropboxes(void)
extern const char *sequencer_context_dir[]; /* Quiet warning. */
const char *sequencer_context_dir[] = {"edit_mask", NULL};
static int sequencer_context(const bContext *C, const char *member, bContextDataResult *result)
static int /*eContextResult*/ sequencer_context(const bContext *C,
const char *member,
bContextDataResult *result)
{
Scene *scene = CTX_data_scene(C);
if (CTX_data_dir(member)) {
CTX_data_dir_set(result, sequencer_context_dir);
return true;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "edit_mask")) {
Mask *mask = BKE_sequencer_mask_get(scene);
if (mask) {
CTX_data_id_pointer_set(result, &mask->id);
}
return true;
return CTX_RESULT_OK;
}
return false;
return CTX_RESULT_MEMBER_NOT_FOUND;
}
static void SEQUENCER_GGT_navigate(wmGizmoGroupType *gzgt)

View File

@ -248,22 +248,24 @@ static void text_keymap(struct wmKeyConfig *keyconf)
const char *text_context_dir[] = {"edit_text", NULL};
static int text_context(const bContext *C, const char *member, bContextDataResult *result)
static int /*eContextResult*/ text_context(const bContext *C,
const char *member,
bContextDataResult *result)
{
SpaceText *st = CTX_wm_space_text(C);
if (CTX_data_dir(member)) {
CTX_data_dir_set(result, text_context_dir);
return 1;
return CTX_RESULT_OK;
}
if (CTX_data_equals(member, "edit_text")) {
if (st->text != NULL) {
CTX_data_id_pointer_set(result, &st->text->id);
}
return 1;
return CTX_RESULT_OK;
}
return 0;
return CTX_RESULT_MEMBER_NOT_FOUND;
}
/********************* main region ********************/

View File

@ -94,7 +94,7 @@ typedef struct bScreen {
/** If set, screen has timer handler added in window. */
struct wmTimer *animtimer;
/** Context callback. */
void *context;
void /*bContextDataCallback*/ *context;
/** Runtime. */
struct wmTooltipState *tool_tip;

View File

@ -4260,9 +4260,9 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname)
ListBase newlb;
short newtype;
const int done = CTX_data_get(C, name, &newptr, &newlb, &newtype);
const eContextResult done = CTX_data_get(C, name, &newptr, &newlb, &newtype);
if (done == 1) { /* Found. */
if (done == CTX_RESULT_OK) {
switch (newtype) {
case CTX_DATA_TYPE_POINTER:
if (newptr.data == NULL) {
@ -4295,7 +4295,7 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname)
break;
}
}
else if (done == -1) { /* Found, but not set. */
else if (done == CTX_RESULT_NO_DATA) {
ret = Py_None;
Py_INCREF(ret);
}
@ -4482,9 +4482,9 @@ static int pyrna_struct_setattro(BPy_StructRNA *self, PyObject *pyname, PyObject
ListBase newlb;
short newtype;
const int done = CTX_data_get(C, name, &newptr, &newlb, &newtype);
const eContextResult done = CTX_data_get(C, name, &newptr, &newlb, &newtype);
if (done == 1) {
if (done == CTX_RESULT_OK) {
PyErr_Format(
PyExc_AttributeError, "bpy_struct: Context property \"%.200s\" is read-only", name);
BLI_freelistN(&newlb);