Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 29756) +++ trunk/src/buffer.c (revision 29757) @@ -222,9 +222,12 @@ pcb_buffer_toss_selected(&AddBufferFunctions, pcb, Buffer, X, Y, LeaveSelected, pcb_false, keep_id); } +extern pcb_opfunc_t pcb_RemoveFunctions; void pcb_buffer_move_selected(pcb_board_t *pcb, pcb_buffer_t *Buffer, pcb_coord_t X, pcb_coord_t Y, pcb_bool LeaveSelected, pcb_bool keep_id) { - pcb_buffer_toss_selected(&MoveBufferFunctions, pcb, Buffer, X, Y, LeaveSelected, pcb_false, keep_id); + pcb_buffer_toss_selected(&AddBufferFunctions, pcb, Buffer, X, Y, LeaveSelected, pcb_false, keep_id); + pcb_buffer_toss_selected(&pcb_RemoveFunctions, pcb, Buffer, X, Y, LeaveSelected, pcb_false, keep_id); + pcb_undo_inc_serial(); } static const char pcb_acts_LoadFootprint[] = "pcb_load_footprint(filename[,refdes,value])"; Index: trunk/src/remove.c =================================================================== --- trunk/src/remove.c (revision 29756) +++ trunk/src/remove.c (revision 29757) @@ -44,7 +44,7 @@ static int remove_pre(pcb_opctx_t *ctx, pcb_any_obj_t *obj, void *ptr3); -static pcb_opfunc_t RemoveFunctions = { +pcb_opfunc_t pcb_RemoveFunctions = { remove_pre, NULL, /* common_post */ pcb_lineop_remove, @@ -94,7 +94,7 @@ ctx.remove.pcb = PCB; ctx.remove.destroy_target = NULL; - if (pcb_selected_operation(PCB, PCB->Data, &RemoveFunctions, &ctx, pcb_false, PCB_OBJ_ANY & (~PCB_OBJ_SUBC_PART), locked_too)) { + if (pcb_selected_operation(PCB, PCB->Data, &pcb_RemoveFunctions, &ctx, pcb_false, PCB_OBJ_ANY & (~PCB_OBJ_SUBC_PART), locked_too)) { pcb_undo_inc_serial(); pcb_draw(); return pcb_true; @@ -114,7 +114,7 @@ ctx.remove.pcb = PCB; ctx.remove.destroy_target = NULL; - ptr = pcb_object_operation(&RemoveFunctions, &ctx, Type, Ptr1, Ptr2, Ptr3); + ptr = pcb_object_operation(&pcb_RemoveFunctions, &ctx, Type, Ptr1, Ptr2, Ptr3); pcb_draw(); return ptr; }