Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 16489) +++ trunk/src/buffer.c (revision 16490) @@ -135,7 +135,7 @@ pcb_notify_crosshair_change(pcb_false); ctx.buffer.src = pcb->Data; ctx.buffer.dst = Buffer->Data; - pcb_selected_operation(pcb, pcb->Data, fnc, &ctx, pcb_false, PCB_OBJ_ANY); + pcb_selected_operation(pcb, pcb->Data, fnc, &ctx, pcb_false, PCB_OBJ_ANY & (~PCB_OBJ_SUBC_PART)); /* set origin to passed or current position */ if (X || Y) { Index: trunk/src/remove.c =================================================================== --- trunk/src/remove.c (revision 16489) +++ trunk/src/remove.c (revision 16490) @@ -78,7 +78,7 @@ ctx.remove.pcb = PCB; ctx.remove.destroy_target = NULL; - if (pcb_selected_operation(PCB, PCB->Data, &RemoveFunctions, &ctx, pcb_false, PCB_OBJ_ANY)) { + if (pcb_selected_operation(PCB, PCB->Data, &RemoveFunctions, &ctx, pcb_false, PCB_OBJ_ANY & (~PCB_OBJ_SUBC_PART))) { pcb_undo_inc_serial(); pcb_draw(); return pcb_true;