Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 13115) +++ trunk/src/buffer.c (revision 13116) @@ -141,7 +141,7 @@ pcb_notify_crosshair_change(pcb_false); ctx.buffer.src = pcb->Data; ctx.buffer.dst = Buffer->Data; - pcb_selected_operation(pcb, fnc, &ctx, pcb_false, PCB_TYPEMASK_ALL); + pcb_selected_operation(pcb, pcb->Data, fnc, &ctx, pcb_false, PCB_TYPEMASK_ALL); /* set origin to passed or current position */ if (X || Y) { Index: trunk/src/change.c =================================================================== --- trunk/src/change.c (revision 13115) +++ trunk/src/change.c (revision 13116) @@ -461,7 +461,7 @@ ctx.chgtherm.style = therm_style; ctx.chgtherm.lid = lid; - change = pcb_selected_operation(PCB, &ChangeThermalFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeThermalFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -483,7 +483,7 @@ ctx.chgsize.is_absolute = fixIt; ctx.chgsize.value = Difference; - change = pcb_selected_operation(PCB, &ChangeSizeFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeSizeFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -506,9 +506,9 @@ ctx.chgsize.value = Difference; if (pcb_mask_on(PCB)) - change = pcb_selected_operation(PCB, &ChangeMaskSizeFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeMaskSizeFunctions, &ctx, pcb_false, types); else - change = pcb_selected_operation(PCB, &ChangeClearSizeFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeClearSizeFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -530,7 +530,7 @@ ctx.chgsize.is_absolute = fixIt; ctx.chgsize.value = Difference; - change = pcb_selected_operation(PCB, &Change2ndSizeFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &Change2ndSizeFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -549,7 +549,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ChangeJoinFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeJoinFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -568,7 +568,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &SetJoinFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &SetJoinFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -587,7 +587,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ClrJoinFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ClrJoinFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -606,7 +606,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ChangeNonetlistFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeNonetlistFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -626,7 +626,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &SetNonetlistFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &SetNonetlistFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -645,7 +645,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ClrNonetlistFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ClrNonetlistFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -665,7 +665,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ChangeSquareFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeSquareFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -687,7 +687,7 @@ ctx.chgangle.is_absolute = fixIt; ctx.chgangle.value = Difference; - change = pcb_selected_operation(PCB, &ChangeAngleFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeAngleFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -709,7 +709,7 @@ ctx.chgsize.is_absolute = fixIt; ctx.chgsize.value = Difference; - change = pcb_selected_operation(PCB, &ChangeRadiusFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeRadiusFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -729,7 +729,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &SetSquareFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &SetSquareFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -748,7 +748,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ClrSquareFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ClrSquareFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -767,7 +767,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ChangeOctagonFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ChangeOctagonFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -786,7 +786,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &SetOctagonFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &SetOctagonFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); @@ -805,7 +805,7 @@ ctx.chgsize.pcb = PCB; - change = pcb_selected_operation(PCB, &ClrOctagonFunctions, &ctx, pcb_false, types); + change = pcb_selected_operation(PCB, PCB->Data, &ClrOctagonFunctions, &ctx, pcb_false, types); if (change) { pcb_draw(); pcb_undo_inc_serial(); Index: trunk/src/move.c =================================================================== --- trunk/src/move.c (revision 13115) +++ trunk/src/move.c (revision 13116) @@ -281,7 +281,7 @@ ctx.move.dst_layer = Target; ctx.move.more_to_come = pcb_true; - changed = pcb_selected_operation(PCB, &MoveToLayerFunctions, &ctx, pcb_true, PCB_TYPEMASK_ALL); + changed = pcb_selected_operation(PCB, PCB->Data, &MoveToLayerFunctions, &ctx, pcb_true, PCB_TYPEMASK_ALL); /* passing pcb_true to above operation causes Undoserial to auto-increment */ return (changed); } Index: trunk/src/operation.c =================================================================== --- trunk/src/operation.c (revision 13115) +++ trunk/src/operation.c (revision 13116) @@ -124,13 +124,13 @@ * resets the selected flag if requested * returns pcb_true if anything has changed */ -pcb_bool pcb_selected_operation(pcb_board_t *pcb, pcb_opfunc_t *F, pcb_opctx_t *ctx, pcb_bool Reset, int type) +pcb_bool pcb_selected_operation(pcb_board_t *pcb, pcb_data_t *data, pcb_opfunc_t *F, pcb_opctx_t *ctx, pcb_bool Reset, int type) { pcb_bool changed = pcb_false; /* check lines */ if (type & PCB_TYPE_LINE && F->Line) { - PCB_LINE_VISIBLE_LOOP(pcb->Data); + PCB_LINE_VISIBLE_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, line)) { if (Reset) { @@ -146,7 +146,7 @@ /* check arcs */ if (type & PCB_TYPE_ARC && F->Arc) { - PCB_ARC_VISIBLE_LOOP(pcb->Data); + PCB_ARC_VISIBLE_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, arc)) { if (Reset) { @@ -162,7 +162,7 @@ /* check text */ if (type & PCB_TYPE_TEXT && F->Text) { - PCB_TEXT_ALL_LOOP(pcb->Data); + PCB_TEXT_ALL_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, text) && pcb_text_is_visible(PCB, layer, text)) { if (Reset) { @@ -178,7 +178,7 @@ /* check polygons */ if (type & PCB_TYPE_POLY && F->Polygon) { - PCB_POLY_VISIBLE_LOOP(pcb->Data); + PCB_POLY_VISIBLE_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, polygon)) { if (Reset) { @@ -193,7 +193,7 @@ } if (type & PCB_TYPE_SUBC && F->subc) { - PCB_SUBC_LOOP(pcb->Data); + PCB_SUBC_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, subc)) { if (Reset) { @@ -210,7 +210,7 @@ /* elements silkscreen */ if (type & PCB_TYPE_ELEMENT && pcb_silk_on(pcb) && F->Element) { - PCB_ELEMENT_LOOP(pcb->Data); + PCB_ELEMENT_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, element)) { if (Reset) { @@ -225,7 +225,7 @@ } if (type & PCB_TYPE_ELEMENT_NAME && pcb_silk_on(pcb) && F->ElementName) { - PCB_ELEMENT_LOOP(pcb->Data); + PCB_ELEMENT_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, &PCB_ELEM_TEXT_VISIBLE(PCB, element))) { if (Reset) { @@ -240,7 +240,7 @@ } if (type & PCB_TYPE_PIN && pcb->PinOn && F->Pin) { - PCB_ELEMENT_LOOP(pcb->Data); + PCB_ELEMENT_LOOP(data); { PCB_PIN_LOOP(element); { @@ -259,7 +259,7 @@ } if (type & PCB_TYPE_PAD && pcb->PinOn && F->Pad) { - PCB_ELEMENT_LOOP(pcb->Data); + PCB_ELEMENT_LOOP(data); { PCB_PAD_LOOP(element); { @@ -279,7 +279,7 @@ /* process vias and padstacks */ if (type & PCB_TYPE_VIA && pcb->ViaOn && F->Via) { - PCB_VIA_LOOP(pcb->Data); + PCB_VIA_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, via)) { if (Reset) { @@ -294,7 +294,7 @@ } if (type & PCB_TYPE_PSTK && pcb->ViaOn && F->padstack) { - PCB_PADSTACK_LOOP(pcb->Data); + PCB_PADSTACK_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, padstack)) { if (Reset) { @@ -310,7 +310,7 @@ /* and rat-lines */ if (type & PCB_TYPE_RATLINE && pcb->RatOn && F->Rat) { - PCB_RAT_LOOP(pcb->Data); + PCB_RAT_LOOP(data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, line)) { if (Reset) { Index: trunk/src/operation.h =================================================================== --- trunk/src/operation.h (revision 13115) +++ trunk/src/operation.h (revision 13116) @@ -149,6 +149,6 @@ } pcb_opfunc_t; void *pcb_object_operation(pcb_opfunc_t *F, pcb_opctx_t *ctx, int Type, void *Ptr1, void *Ptr2, void *Ptr3); -pcb_bool pcb_selected_operation(pcb_board_t *pcb, pcb_opfunc_t *F, pcb_opctx_t *ctx, pcb_bool Reset, int type); +pcb_bool pcb_selected_operation(pcb_board_t *pcb, pcb_data_t *data, pcb_opfunc_t *F, pcb_opctx_t *ctx, pcb_bool Reset, int type); #endif Index: trunk/src/remove.c =================================================================== --- trunk/src/remove.c (revision 13115) +++ trunk/src/remove.c (revision 13116) @@ -88,7 +88,7 @@ ctx.remove.bulk = pcb_true; ctx.remove.destroy_target = NULL; - if (pcb_selected_operation(PCB, &RemoveFunctions, &ctx, pcb_false, PCB_TYPEMASK_ALL)) { + if (pcb_selected_operation(PCB, PCB->Data, &RemoveFunctions, &ctx, pcb_false, PCB_TYPEMASK_ALL)) { pcb_undo_inc_serial(); pcb_draw(); return (pcb_true);