Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 13014) +++ trunk/src/obj_subc.c (revision 13015) @@ -1218,6 +1218,19 @@ return NULL; } +void *pcb_subc_remove(pcb_subc_t *sc) +{ + pcb_opctx_t ctx; + + ctx.remove.pcb = PCB; + ctx.remove.bulk = pcb_false; + ctx.remove.destroy_target = NULL; +/* PCB_CLEAR_PARENT(subc);*/ + + return pcb_subcop_remove(&ctx, sc); +} + + void *pcb_subcop_clear_octagon(pcb_opctx_t *ctx, pcb_subc_t *sc) { pcb_subc_op(ctx->chgsize.pcb->Data, sc, &ClrOctagonFunctions, ctx); Index: trunk/src/obj_subc.h =================================================================== --- trunk/src/obj_subc.h (revision 13014) +++ trunk/src/obj_subc.h (revision 13015) @@ -89,6 +89,10 @@ /* Search subc, "recursively", by ID */ pcb_subc_t *pcb_subc_by_id(pcb_data_t *base, long int ID); +/* undoable remove */ +void *pcb_subc_remove(pcb_subc_t *sc); + + /*** loops ***/ #define PCB_SUBC_LOOP(top) do { \