Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/screen/screen_context.c
| Show First 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | const char *screen_context_dir[] = { | ||||
| "image_paint_object", | "image_paint_object", | ||||
| "particle_edit_object", | "particle_edit_object", | ||||
| "pose_object", | "pose_object", | ||||
| "sequences", | "sequences", | ||||
| "selected_sequences", | "selected_sequences", | ||||
| "selected_editable_sequences", /* sequencer */ | "selected_editable_sequences", /* sequencer */ | ||||
| "gpencil_data", | "gpencil_data", | ||||
| "gpencil_data_owner", /* grease pencil data */ | "gpencil_data_owner", /* grease pencil data */ | ||||
| "annotation_data", | |||||
| "annotation_data_owner", | |||||
| "visible_gpencil_layers", | "visible_gpencil_layers", | ||||
| "editable_gpencil_layers", | "editable_gpencil_layers", | ||||
| "editable_gpencil_strokes", | "editable_gpencil_strokes", | ||||
| "active_gpencil_layer", | "active_gpencil_layer", | ||||
| "active_gpencil_frame", | "active_gpencil_frame", | ||||
| "active_annotation_layer", | |||||
| "active_operator", | "active_operator", | ||||
| "visible_fcurves", | "visible_fcurves", | ||||
| "editable_fcurves", | "editable_fcurves", | ||||
| "selected_visible_fcurves", | "selected_visible_fcurves", | ||||
| "selected_editable_fcurves", | "selected_editable_fcurves", | ||||
| "active_editable_fcurve", | "active_editable_fcurve", | ||||
| NULL, | NULL, | ||||
| }; | }; | ||||
| ▲ Show 20 Lines • Show All 395 Lines • ▼ Show 20 Lines | else if (CTX_data_equals(member, "selected_editable_sequences")) { | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "gpencil_data")) { | else if (CTX_data_equals(member, "gpencil_data")) { | ||||
| /* FIXME: for some reason, CTX_data_active_object(C) returns NULL when called from these | /* FIXME: for some reason, CTX_data_active_object(C) returns NULL when called from these | ||||
| * situations (as outlined above - see Campbell's #ifdefs). | * situations (as outlined above - see Campbell's #ifdefs). | ||||
| * That causes the get_active function to fail when called from context. | * That causes the get_active function to fail when called from context. | ||||
| * For that reason, we end up using an alternative where we pass everything in! | * For that reason, we end up using an alternative where we pass everything in! | ||||
| */ | */ | ||||
| bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, sa, scene, obact); | bGPdata *gpd = ED_gpencil_data_get_active_direct(sa, obact); | ||||
| if (gpd) { | if (gpd) { | ||||
| CTX_data_id_pointer_set(result, &gpd->id); | CTX_data_id_pointer_set(result, &gpd->id); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "gpencil_data_owner")) { | else if (CTX_data_equals(member, "gpencil_data_owner")) { | ||||
| /* Pointer to which data/datablock owns the reference to the Grease Pencil data being used | /* Pointer to which data/datablock owns the reference to the Grease Pencil data being used | ||||
dfelinto: Remove the XXX bit | |||||
| * (as gpencil_data). | * (as gpencil_data). | ||||
| * XXX: see comment for gpencil_data case. | * XXX: see comment for gpencil_data case. | ||||
| */ | */ | ||||
| bGPdata **gpd_ptr = NULL; | bGPdata **gpd_ptr = NULL; | ||||
| PointerRNA ptr; | PointerRNA ptr; | ||||
| /* get pointer to Grease Pencil Data */ | /* get pointer to Grease Pencil Data */ | ||||
| gpd_ptr = ED_gpencil_data_get_pointers_direct((ID *)sc, sa, scene, obact, &ptr); | gpd_ptr = ED_gpencil_data_get_pointers_direct(sa, obact, &ptr); | ||||
| if (gpd_ptr) { | |||||
| CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data); | |||||
| return 1; | |||||
| } | |||||
| } | |||||
| else if (CTX_data_equals(member, "annotation_data")) { | |||||
| bGPdata *gpd = ED_annotation_data_get_active_direct((ID *)sc, sa, scene); | |||||
| if (gpd) { | |||||
| CTX_data_id_pointer_set(result, &gpd->id); | |||||
| return 1; | |||||
| } | |||||
| } | |||||
| else if (CTX_data_equals(member, "annotation_data_owner")) { | |||||
| /* Pointer to which data/datablock owns the reference to the Grease Pencil data being used. | |||||
dfelintoUnsubmitted Not Done Inline ActionsKeep the comment in a single line? dfelinto: Keep the comment in a single line? | |||||
| */ | |||||
| bGPdata **gpd_ptr = NULL; | |||||
| PointerRNA ptr; | |||||
| /* get pointer to Grease Pencil Data */ | |||||
dfelintoUnsubmitted Not Done Inline ActionsUse first capital letter with full stop for comments. - /* get pointer to Grease Pencil Data */ + /* Get pointer to Grease Pencil Data. */ dfelinto: Use first capital letter with full stop for comments.
```
- /* get pointer to Grease Pencil… | |||||
| gpd_ptr = ED_annotation_data_get_pointers_direct((ID *)sc, sa, scene, &ptr); | |||||
| if (gpd_ptr) { | if (gpd_ptr) { | ||||
| CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data); | CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "active_gpencil_layer")) { | else if (CTX_data_equals(member, "active_gpencil_layer")) { | ||||
| /* XXX: see comment for gpencil_data case... */ | /* XXX: see comment for gpencil_data case... */ | ||||
dfelintoUnsubmitted Not Done Inline ActionsRemove this. dfelinto: Remove this. | |||||
| bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, sa, scene, obact); | bGPdata *gpd = ED_gpencil_data_get_active_direct(sa, obact); | ||||
| if (gpd) { | |||||
| bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); | |||||
| if (gpl) { | |||||
| CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl); | |||||
| return 1; | |||||
| } | |||||
| } | |||||
| } | |||||
| else if (CTX_data_equals(member, "active_annotation_layer")) { | |||||
| bGPdata *gpd = ED_annotation_data_get_active_direct((ID *)sc, sa, scene); | |||||
| if (gpd) { | if (gpd) { | ||||
| bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); | bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); | ||||
| if (gpl) { | if (gpl) { | ||||
| CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl); | CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "active_gpencil_frame")) { | else if (CTX_data_equals(member, "active_gpencil_frame")) { | ||||
| /* XXX: see comment for gpencil_data case... */ | /* XXX: see comment for gpencil_data case... */ | ||||
| bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, sa, scene, obact); | bGPdata *gpd = ED_gpencil_data_get_active_direct(sa, obact); | ||||
| if (gpd) { | if (gpd) { | ||||
| bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); | bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); | ||||
| if (gpl) { | if (gpl) { | ||||
| CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl->actframe); | CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl->actframe); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "visible_gpencil_layers")) { | else if (CTX_data_equals(member, "visible_gpencil_layers")) { | ||||
| /* XXX: see comment for gpencil_data case... */ | /* XXX: see comment for gpencil_data case... */ | ||||
| bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, sa, scene, obact); | bGPdata *gpd = ED_gpencil_data_get_active_direct(sa, obact); | ||||
| if (gpd) { | if (gpd) { | ||||
| bGPDlayer *gpl; | bGPDlayer *gpl; | ||||
| for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { | for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { | ||||
| if ((gpl->flag & GP_LAYER_HIDE) == 0) { | if ((gpl->flag & GP_LAYER_HIDE) == 0) { | ||||
| CTX_data_list_add(result, &gpd->id, &RNA_GPencilLayer, gpl); | CTX_data_list_add(result, &gpd->id, &RNA_GPencilLayer, gpl); | ||||
| } | } | ||||
| } | } | ||||
| CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "editable_gpencil_layers")) { | else if (CTX_data_equals(member, "editable_gpencil_layers")) { | ||||
| /* XXX: see comment for gpencil_data case... */ | /* XXX: see comment for gpencil_data case... */ | ||||
| bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, sa, scene, obact); | bGPdata *gpd = ED_gpencil_data_get_active_direct(sa, obact); | ||||
| if (gpd) { | if (gpd) { | ||||
| bGPDlayer *gpl; | bGPDlayer *gpl; | ||||
| for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { | for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { | ||||
| if (gpencil_layer_is_editable(gpl)) { | if (gpencil_layer_is_editable(gpl)) { | ||||
| CTX_data_list_add(result, &gpd->id, &RNA_GPencilLayer, gpl); | CTX_data_list_add(result, &gpd->id, &RNA_GPencilLayer, gpl); | ||||
| } | } | ||||
| } | } | ||||
| CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "editable_gpencil_strokes")) { | else if (CTX_data_equals(member, "editable_gpencil_strokes")) { | ||||
| /* XXX: see comment for gpencil_data case... */ | /* XXX: see comment for gpencil_data case... */ | ||||
| bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, sa, scene, obact); | bGPdata *gpd = ED_gpencil_data_get_active_direct(sa, obact); | ||||
| const bool is_multiedit = (bool)GPENCIL_MULTIEDIT_SESSIONS_ON(gpd); | const bool is_multiedit = (bool)GPENCIL_MULTIEDIT_SESSIONS_ON(gpd); | ||||
| if (gpd) { | if (gpd) { | ||||
| bGPDlayer *gpl; | bGPDlayer *gpl; | ||||
| for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { | for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { | ||||
| if (gpencil_layer_is_editable(gpl) && (gpl->actframe)) { | if (gpencil_layer_is_editable(gpl) && (gpl->actframe)) { | ||||
| bGPDframe *gpf; | bGPDframe *gpf; | ||||
| ▲ Show 20 Lines • Show All 114 Lines • Show Last 20 Lines | |||||
Remove the XXX bit