Index: trunk/src/change.c =================================================================== --- trunk/src/change.c (revision 13233) +++ trunk/src/change.c (revision 13234) @@ -134,7 +134,7 @@ NULL, NULL, pcb_subcop_change_clear_size, - NULL /* padstack */ + pcb_pstkop_change_clear_size }; static pcb_opfunc_t ChangeNameFunctions = { Index: trunk/src/obj_pstk_op.c =================================================================== --- trunk/src/obj_pstk_op.c (revision 13233) +++ trunk/src/obj_pstk_op.c (revision 13234) @@ -253,7 +253,29 @@ return NULL; } +void *pcb_pstkop_change_clear_size(pcb_opctx_t *ctx, pcb_pstk_t *ps) +{ + pcb_coord_t value = (ctx->chgsize.is_absolute) ? ctx->chgsize.value : ps->Clearance + ctx->chgsize.value; + if (PCB_FLAG_TEST(PCB_FLAG_LOCK, ps)) + return NULL; + if (value < 0) + value = 0; + value = MIN(PCB_MAX_LINESIZE, value); + if (!ctx->chgsize.is_absolute && (ctx->chgsize.value < 0) && (value < PCB->Bloat * 2)) + value = 0; + if ((ctx->chgsize.value > 0) && (value < PCB->Bloat * 2)) + value = PCB->Bloat * 2 + 2; + if (ps->Clearance == value) + return NULL; + + if (pcb_pstk_change_instance(ps, NULL, &value, NULL, NULL) == 0) + return ps; + + return NULL; +} + + void *pcb_pstkop_change_2nd_size(pcb_opctx_t *ctx, pcb_pstk_t *ps) { pcb_pstk_proto_t proto; Index: trunk/src/obj_pstk_op.h =================================================================== --- trunk/src/obj_pstk_op.h (revision 13233) +++ trunk/src/obj_pstk_op.h (revision 13234) @@ -42,6 +42,7 @@ void *pcb_pstkop_rotate(pcb_opctx_t *ctx, pcb_pstk_t *ps); void *pcb_pstkop_change_size(pcb_opctx_t *ctx, pcb_pstk_t *ps); +void *pcb_pstkop_change_clear_size(pcb_opctx_t *ctx, pcb_pstk_t *ps); /* changes the global clearance */ void *pcb_pstkop_change_2nd_size(pcb_opctx_t *ctx, pcb_pstk_t *ps); /*** TODO: unimplemented ones ***/