Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 34164) +++ trunk/src/buffer.c (revision 34165) @@ -783,7 +783,7 @@ return (pcb_object_operation(&AddBufferFunctions, &ctx, Type, Ptr1, Ptr2, Ptr3)); } -rnd_bool pcb_buffer_copy_to_layout(pcb_board_t *pcb, rnd_coord_t X, rnd_coord_t Y, rnd_bool keep_id) +rnd_bool pcb_buffer_copy_to_layout(pcb_board_t *pcb, rnd_coord_t X, rnd_coord_t Y, rnd_bool keep_id, rnd_bool update_exto) { rnd_cardinal_t i; rnd_bool changed = rnd_false; @@ -827,7 +827,7 @@ { pcb_line_t *nline = pcb_lineop_copy(&ctx, destlayer, line); if (nline != NULL) { - if (keep_id) + if (update_exto) pcb_extobj_float_geo((pcb_any_obj_t *)nline); changed = 1; } @@ -837,7 +837,7 @@ { pcb_arc_t *narc = pcb_arcop_copy(&ctx, destlayer, arc); if (narc != NULL) { - if (keep_id) + if (update_exto) pcb_extobj_float_geo((pcb_any_obj_t *)narc); changed = 1; } @@ -847,7 +847,7 @@ { pcb_text_t *ntext = pcb_textop_copy(&ctx, destlayer, text); if (ntext != NULL) { - if (keep_id) + if (update_exto) pcb_extobj_float_geo((pcb_any_obj_t *)ntext); changed = 1; } @@ -857,7 +857,7 @@ { pcb_poly_t *npoly = pcb_polyop_copy(&ctx, destlayer, polygon); if (npoly != NULL) { - if (keep_id) + if (update_exto) pcb_extobj_float_geo((pcb_any_obj_t *)npoly); changed = 1; } @@ -867,7 +867,7 @@ { pcb_gfx_t *ngfx = pcb_gfxop_copy(&ctx, destlayer, gfx); if (ngfx != NULL) { - if (keep_id) + if (update_exto) pcb_extobj_float_geo((pcb_any_obj_t *)ngfx); changed = 1; } @@ -886,7 +886,7 @@ } nsubc = pcb_subcop_copy(&ctx, subc); if (nsubc != NULL) { - if (keep_id) + if (update_exto) pcb_extobj_float_geo((pcb_any_obj_t *)nsubc); changed = 1; } @@ -914,7 +914,7 @@ pcb_pstk_t *nps; nps = pcb_pstkop_copy(&ctx, padstack); if (nps != NULL) { - if (keep_id) + if (update_exto) pcb_extobj_float_geo((pcb_any_obj_t *)nps); changed = 1; } @@ -1169,7 +1169,7 @@ oldx = x; oldy = y; - if (pcb_buffer_copy_to_layout(PCB, x, y, rnd_false)) + if (pcb_buffer_copy_to_layout(PCB, x, y, rnd_false, rnd_true)) pcb_board_set_changed_flag(PCB, rnd_true); } break; Index: trunk/src/buffer.h =================================================================== --- trunk/src/buffer.h (revision 34164) +++ trunk/src/buffer.h (revision 34165) @@ -94,7 +94,7 @@ If keep_id is true, do not change object IDs - this should be used only in one specific case, when selected objects are moved using the buffer (which means exactly 1 copy is made and the original version is removed). */ -rnd_bool pcb_buffer_copy_to_layout(pcb_board_t *pcb, rnd_coord_t X, rnd_coord_t Y, rnd_bool keep_id); +rnd_bool pcb_buffer_copy_to_layout(pcb_board_t *pcb, rnd_coord_t X, rnd_coord_t Y, rnd_bool keep_id, rnd_bool update_exto); /* change the side of all objects in the buffer */ void pcb_buffer_flip_side(pcb_board_t *pcb, pcb_buffer_t *Buffer); Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 34164) +++ trunk/src/object_act.c (revision 34165) @@ -580,7 +580,7 @@ /* Place components onto center of board. */ pcb_crosshair.Y = py; /* flipping side depends on the crosshair unfortunately */ - if (pcb_buffer_copy_to_layout(pcb, px, py, rnd_false)) + if (pcb_buffer_copy_to_layout(pcb, px, py, rnd_false, rnd_false)) pcb_board_set_changed_flag(pcb, rnd_true); } else if (sc && subc_differs(sc, footprint)) { @@ -641,7 +641,7 @@ if (paste_ok) { if (sc != NULL) pcb_subc_remove(sc); - if (pcb_buffer_copy_to_layout(pcb, orig_cx, orig_cy, rnd_false)) + if (pcb_buffer_copy_to_layout(pcb, orig_cx, orig_cy, rnd_false, rnd_false)) pcb_board_set_changed_flag(pcb,rnd_true); } } Index: trunk/src/select_act.c =================================================================== --- trunk/src/select_act.c (revision 34164) +++ trunk/src/select_act.c (revision 34165) @@ -169,7 +169,7 @@ pcb_remove_selected(0); pcb_subc_convert_from_buffer(PCB_PASTEBUFFER); pcb_undo_restore_serial(); - pcb_buffer_copy_to_layout(PCB, x, y, rnd_false); + pcb_buffer_copy_to_layout(PCB, x, y, rnd_false, rnd_false); pcb_buffer_set_number(pcb_crosshair_note.Buffer); } break; Index: trunk/src_plugins/extedit/extedit.c =================================================================== --- trunk/src_plugins/extedit/extedit.c (revision 34164) +++ trunk/src_plugins/extedit/extedit.c (revision 34165) @@ -312,7 +312,7 @@ pcb_remove_selected(rnd_true); if (paste) { pcb_undo_save_serial(); - pcb_buffer_copy_to_layout(PCB, pastex, pastey, rnd_false); + pcb_buffer_copy_to_layout(PCB, pastex, pastey, rnd_false, rnd_false); pcb_undo_restore_serial(); pcb_remove_object(type, ptr1, ptr2, ptr3); pcb_undo_inc_serial(); Index: trunk/src_plugins/tool_std/tool_buffer.c =================================================================== --- trunk/src_plugins/tool_std/tool_buffer.c (revision 34164) +++ trunk/src_plugins/tool_std/tool_buffer.c (revision 34165) @@ -62,7 +62,7 @@ return; } - if (pcb_buffer_copy_to_layout(pcb, pcb_crosshair.AttachedObject.tx, pcb_crosshair.AttachedObject.ty, keep_ids)) { + if (pcb_buffer_copy_to_layout(pcb, pcb_crosshair.AttachedObject.tx, pcb_crosshair.AttachedObject.ty, keep_ids, rnd_true)) { pcb_board_set_changed_flag(pcb, rnd_true); rnd_gui->invalidate_all(rnd_gui); }