Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 8148) +++ trunk/src/action_helper.c (revision 8149) @@ -1113,7 +1113,7 @@ } } } - if (pcb_buffer_copy_to_layout(Note.X, Note.Y)) + if (pcb_buffer_copy_to_layout(PCB, Note.X, Note.Y)) pcb_board_set_changed_flag(pcb_true); if (e) { int type = pcb_search_screen(Note.X, Note.Y, PCB_TYPE_ELEMENT, &ptr1, &ptr2, Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 8148) +++ trunk/src/buffer.c (revision 8149) @@ -578,7 +578,7 @@ * pastes the contents of the buffer to the layout. Only visible objects * are handled by the routine. */ -pcb_bool pcb_buffer_copy_to_layout(pcb_coord_t X, pcb_coord_t Y) +pcb_bool pcb_buffer_copy_to_layout(pcb_board_t *pcb, pcb_coord_t X, pcb_coord_t Y) { pcb_cardinal_t i; pcb_bool changed = pcb_false; @@ -590,7 +590,7 @@ #endif /* set movement vector */ - ctx.copy.pcb = PCB; + ctx.copy.pcb = pcb; ctx.copy.DeltaX = X - PCB_PASTEBUFFER->X; ctx.copy.DeltaY = Y - PCB_PASTEBUFFER->Y; @@ -597,7 +597,7 @@ /* paste all layers */ num_layers = PCB_PASTEBUFFER->Data->LayerN; if (num_layers == 0) /* some buffers don't have layers, just simple objects */ - num_layers = PCB->Data->LayerN; + num_layers = pcb->Data->LayerN; for (i = 0; i < num_layers; i++) { pcb_layer_t *sourcelayer = &PCB_PASTEBUFFER->Data->Layer[i], *destlayer = LAYER_PTR(i); @@ -630,13 +630,13 @@ } /* paste elements */ - if (PCB->PinOn && PCB->ElementOn) { + if (pcb->PinOn && pcb->ElementOn) { PCB_ELEMENT_LOOP(PCB_PASTEBUFFER->Data); { #ifdef DEBUG printf("In CopyPastebufferToLayout, pasting element %s\n", element->Name[1].TextString); #endif - if (PCB_FRONT(element) || PCB->InvisibleObjectsOn) { + if (PCB_FRONT(element) || pcb->InvisibleObjectsOn) { CopyElement(&ctx, element); changed = pcb_true; } @@ -645,7 +645,7 @@ } /* finally the vias */ - if (PCB->ViaOn) { + if (pcb->ViaOn) { changed |= (pinlist_length(&(PCB_PASTEBUFFER->Data->Via)) != 0); PCB_VIA_LOOP(PCB_PASTEBUFFER->Data); { @@ -737,7 +737,6 @@ @end table %end-doc */ - static int pcb_act_PasteBuffer(int argc, const char **argv, pcb_coord_t x, pcb_coord_t y) { const char *function = argc ? argv[0] : ""; @@ -848,7 +847,7 @@ oldx = x; oldy = y; - if (pcb_buffer_copy_to_layout(x, y)) + if (pcb_buffer_copy_to_layout(PCB, x, y)) pcb_board_set_changed_flag(pcb_true); } break; Index: trunk/src/buffer.h =================================================================== --- trunk/src/buffer.h (revision 8148) +++ trunk/src/buffer.h (revision 8149) @@ -63,7 +63,7 @@ /* pastes the contents of the buffer to the layout. Only visible objects are handled by the routine. */ -pcb_bool pcb_buffer_copy_to_layout(pcb_coord_t X, pcb_coord_t Y); +pcb_bool pcb_buffer_copy_to_layout(pcb_board_t *pcb, pcb_coord_t X, pcb_coord_t Y); pcb_data_t *pcb_buffer_new(pcb_board_t *pcb); Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 8148) +++ trunk/src/object_act.c (revision 8149) @@ -583,7 +583,7 @@ ny = PCB->MaxHeight - 1; /* Place components onto center of board. */ - if (pcb_buffer_copy_to_layout(nx, ny)) + if (pcb_buffer_copy_to_layout(PCB, nx, ny)) pcb_board_set_changed_flag(pcb_true); } @@ -622,7 +622,7 @@ pcb_element_remove(e); - if (pcb_buffer_copy_to_layout(mx, my)) + if (pcb_buffer_copy_to_layout(PCB, mx, my)) pcb_board_set_changed_flag(pcb_true); } @@ -807,7 +807,7 @@ pcb_erase_obj(PCB_TYPE_ELEMENT, ptr1, ptr1); pcb_undo_move_obj_to_remove(PCB_TYPE_ELEMENT, ptr1, ptr2, ptr3); pcb_undo_restore_serial(); - pcb_buffer_copy_to_layout(0, 0); + pcb_buffer_copy_to_layout(PCB, 0, 0); pcb_buffer_set_number(Note.Buffer); pcb_board_set_changed_flag(pcb_true); } Index: trunk/src/rats_patch.c =================================================================== --- trunk/src/rats_patch.c (revision 8148) +++ trunk/src/rats_patch.c (revision 8149) @@ -431,7 +431,7 @@ a[2] = element->Name[2].TextString; a[3] = NULL; pcb_act_LoadFootprint(3, a, element->MarkX, element->MarkY); - pcb_buffer_copy_to_layout(element->MarkX, element->MarkY); + pcb_buffer_copy_to_layout(PCB, element->MarkX, element->MarkY); pcb_ratspatch_append_optimize(PCB, RATP_CHANGE_ATTRIB, a[1], "footprint", fpname); pcb_element_remove(element); } Index: trunk/src/select_act.c =================================================================== --- trunk/src/select_act.c (revision 8148) +++ trunk/src/select_act.c (revision 8149) @@ -229,7 +229,7 @@ pcb_remove_selected(); pcb_element_convert_from_buffer(PCB_PASTEBUFFER); pcb_undo_restore_serial(); - pcb_buffer_copy_to_layout(x, y); + pcb_buffer_copy_to_layout(PCB, x, y); pcb_buffer_set_number(Note.Buffer); } break;