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:
-rw-r--r--source/blender/editors/animation/anim_channels_edit.c39
-rw-r--r--source/blender/editors/gpencil/editaction_gpencil.c39
2 files changed, 26 insertions, 52 deletions
diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c
index ff6bd3547ce..864bf8e55de 100644
--- a/source/blender/editors/animation/anim_channels_edit.c
+++ b/source/blender/editors/animation/anim_channels_edit.c
@@ -1171,28 +1171,41 @@ static int animchannels_delete_exec(bContext *C, wmOperator *UNUSED(op))
BLI_freelistN(&anim_data);
}
- /* now do F-Curves */
- if (ac.datatype != ANIMCONT_GPENCIL) {
- /* filter data */
- filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS);
- ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
-
- /* delete selected F-Curves */
- for (ale= anim_data.first; ale; ale= ale->next) {
- /* only F-Curves, and only if we can identify its parent */
- if (ale->type == ANIMTYPE_FCURVE) {
+ /* filter data */
+ filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS);
+ ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);
+
+ /* delete selected data channels */
+ for (ale= anim_data.first; ale; ale= ale->next) {
+ switch (ale->type) {
+ case ANIMTYPE_FCURVE:
+ {
+ /* F-Curves if we can identify its parent */
AnimData *adt= ale->adt;
FCurve *fcu= (FCurve *)ale->data;
/* try to free F-Curve */
ANIM_fcurve_delete_from_animdata(&ac, adt, fcu);
}
+ break;
+
+ case ANIMTYPE_GPLAYER:
+ {
+ /* Grease Pencil layer */
+ bGPdata *gpd= (bGPdata *)ale->id;
+ bGPDlayer *gpl= (bGPDlayer *)ale->data;
+
+ /* try to delete the layer's data and the layer itself */
+ free_gpencil_frames(gpl);
+ BLI_freelinkN(&gpd->layers, gpl);
+ }
+ break;
}
-
- /* cleanup */
- BLI_freelistN(&anim_data);
}
+ /* cleanup */
+ BLI_freelistN(&anim_data);
+
/* send notifier that things have changed */
WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
diff --git a/source/blender/editors/gpencil/editaction_gpencil.c b/source/blender/editors/gpencil/editaction_gpencil.c
index 34cddfbc463..518a90b2026 100644
--- a/source/blender/editors/gpencil/editaction_gpencil.c
+++ b/source/blender/editors/gpencil/editaction_gpencil.c
@@ -260,45 +260,6 @@ void deselect_gpencil_layers (void *data, short mode)
/* ***************************************** */
/* Frame Editing Tools */
-#if 0 // XXX disabled until grease pencil code stabilises again
-/* Delete selected grease-pencil layers */
-void delete_gpencil_layers (void)
-{
- ListBase act_data = {NULL, NULL};
- bActListElem *ale, *next;
- void *data;
- short datatype;
- int filter;
-
- /* determine what type of data we are operating on */
- data = get_action_context(&datatype);
- if (data == NULL) return;
- if (datatype != ACTCONT_GPENCIL) return;
-
- /* filter data */
- filter= (ACTFILTER_VISIBLE | ACTFILTER_FOREDIT | ACTFILTER_CHANNELS | ACTFILTER_SEL);
- actdata_filter(&act_data, filter, data, datatype);
-
- /* clean up grease-pencil layers */
- for (ale= act_data.first; ale; ale= next) {
- bGPdata *gpd= (bGPdata *)ale->owner;
- bGPDlayer *gpl= (bGPDlayer *)ale->data;
- next= ale->next;
-
- /* free layer and its data */
- if (SEL_GPL(gpl)) {
- free_gpencil_frames(gpl);
- BLI_freelinkN(&gpd->layers, gpl);
- }
-
- /* free temp memory */
- BLI_freelinkN(&act_data, ale);
- }
-
- BIF_undo_push("Delete GPencil Layers");
-}
-#endif // XXX disabled until Grease Pencil code stabilises again...
-
/* Delete selected frames */
void delete_gplayer_frames (bGPDlayer *gpl)
{