Index: trunk/src/flag.c =================================================================== --- trunk/src/flag.c (revision 9498) +++ trunk/src/flag.c (revision 9499) @@ -35,13 +35,13 @@ pcb_lineop_change_flag, pcb_textop_change_flag, pcb_polyop_change_flag, + pcb_pinop_change_flag, NULL, NULL, + pcb_pinop_change_flag, + pcb_padop_change_flag, NULL, NULL, - NULL, - NULL, - NULL, pcb_arcop_change_flag, NULL, NULL, Index: trunk/src/obj_pad.c =================================================================== --- trunk/src/obj_pad.c (revision 9498) +++ trunk/src/obj_pad.c (revision 9499) @@ -382,6 +382,15 @@ return (NULL); } +#define PCB_PAD_FLAGS (PCB_FLAG_FOUND | PCB_FLAG_NOPASTE | PCB_FLAG_PININPOLY | PCB_FLAG_SELECTED | PCB_FLAG_AUTO | PCB_FLAG_LOCK | PCB_FLAG_VISIT) +void *pcb_padop_change_flag(pcb_opctx_t *ctx, pcb_data_t *data, pcb_pad_t *pad) +{ + if ((ctx->chgflag.flag & PCB_PAD_FLAGS) != ctx->chgflag.flag) + return NULL; + PCB_FLAG_CHANGE(ctx->chgflag.how, ctx->chgflag.flag, pad); + return pad; +} + /*** draw ***/ static void draw_pad_name(pcb_pad_t * pad) { Index: trunk/src/obj_pad_op.h =================================================================== --- trunk/src/obj_pad_op.h (revision 9498) +++ trunk/src/obj_pad_op.h (revision 9499) @@ -36,7 +36,9 @@ void *pcb_padop_set_square(pcb_opctx_t *ctx, pcb_element_t *Element, pcb_pad_t *Pad); void *pcb_padop_clear_square(pcb_opctx_t *ctx, pcb_element_t *Element, pcb_pad_t *Pad); void *pcb_padop_change_mask_size(pcb_opctx_t *ctx, pcb_element_t *Element, pcb_pad_t *Pad); +void *pcb_padop_change_flag(pcb_opctx_t *ctx, pcb_data_t *data, pcb_pad_t *pad); + Index: trunk/src/obj_pinvia.c =================================================================== --- trunk/src/obj_pinvia.c (revision 9498) +++ trunk/src/obj_pinvia.c (revision 9499) @@ -840,6 +840,16 @@ return NULL; } +#define PCB_PIN_FLAGS (PCB_FLAG_FOUND | PCB_FLAG_HOLE | PCB_FLAG_PININPOLY | PCB_FLAG_SELECTED | PCB_FLAG_AUTO | PCB_FLAG_LOCK | PCB_FLAG_VISIT) +void *pcb_pinop_change_flag(pcb_opctx_t *ctx, pcb_data_t *data, pcb_pin_t *pin) +{ + if ((ctx->chgflag.flag & PCB_PIN_FLAGS) != ctx->chgflag.flag) + return NULL; + PCB_FLAG_CHANGE(ctx->chgflag.how, ctx->chgflag.flag, pin); + return pin; +} + + /*** draw ***/ /* setup color for pin or via */ Index: trunk/src/obj_pinvia_op.h =================================================================== --- trunk/src/obj_pinvia_op.h (revision 9498) +++ trunk/src/obj_pinvia_op.h (revision 9499) @@ -58,3 +58,5 @@ void *pcb_viaop_move(pcb_opctx_t *ctx, pcb_pin_t *Via); void *pcb_viaop_destroy(pcb_opctx_t *ctx, pcb_pin_t *Via); void *pcb_viaop_remove(pcb_opctx_t *ctx, pcb_pin_t *Via); +void *pcb_pinop_change_flag(pcb_opctx_t *ctx, pcb_data_t *data, pcb_pin_t *pin); +