Index: trunk/src/obj_rat.c =================================================================== --- trunk/src/obj_rat.c (revision 20892) +++ trunk/src/obj_rat.c (revision 20893) @@ -93,10 +93,14 @@ /*** utility ***/ /* creates a new rat-line */ -pcb_rat_t *pcb_rat_new(pcb_data_t *Data, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_cardinal_t group1, pcb_cardinal_t group2, pcb_coord_t Thickness, pcb_flag_t Flags) +pcb_rat_t *pcb_rat_new(pcb_data_t *Data, long int id, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_cardinal_t group1, pcb_cardinal_t group2, pcb_coord_t Thickness, pcb_flag_t Flags) { - pcb_rat_t *Line = pcb_rat_alloc(Data); + pcb_rat_t *Line; + if (id <= 0) + id = pcb_create_ID_get(); + + Line = pcb_rat_alloc_id(Data, id); if (!Line) return Line; @@ -146,7 +150,7 @@ /* copies a rat-line to paste buffer */ void *pcb_ratop_add_to_buffer(pcb_opctx_t *ctx, pcb_rat_t *Rat) { - return (pcb_rat_new(ctx->buffer.dst, Rat->Point1.X, Rat->Point1.Y, + return (pcb_rat_new(ctx->buffer.dst, -1, Rat->Point1.X, Rat->Point1.Y, Rat->Point2.X, Rat->Point2.Y, Rat->group1, Rat->group2, Rat->Thickness, pcb_flag_mask(Rat->Flags, PCB_FLAG_FOUND | ctx->buffer.extraflg))); } Index: trunk/src/obj_rat.h =================================================================== --- trunk/src/obj_rat.h (revision 20892) +++ trunk/src/obj_rat.h (revision 20893) @@ -47,8 +47,8 @@ void pcb_rat_reg(pcb_data_t *data, pcb_rat_t *rat); void pcb_rat_unreg(pcb_rat_t *rat); - -pcb_rat_t *pcb_rat_new(pcb_data_t *Data, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_cardinal_t group1, pcb_cardinal_t group2, pcb_coord_t Thickness, pcb_flag_t Flags); +/* if id is <= 0, allocate a new id */ +pcb_rat_t *pcb_rat_new(pcb_data_t *Data, long int id, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_cardinal_t group1, pcb_cardinal_t group2, pcb_coord_t Thickness, pcb_flag_t Flags); pcb_bool pcb_rats_destroy(pcb_bool selected); #endif Index: trunk/src/rats.c =================================================================== --- trunk/src/rats.c (revision 20892) +++ trunk/src/rats.c (revision 20893) @@ -662,7 +662,7 @@ } else { /* found the shortest distance subnet, draw the rat */ - if ((line = pcb_rat_new(PCB->Data, + if ((line = pcb_rat_new(PCB->Data, -1, firstpoint->X, firstpoint->Y, secondpoint->X, secondpoint->Y, firstpoint->group, secondpoint->group, conf_core.appearance.rat_thickness, pcb_no_flags())) != NULL) { @@ -944,7 +944,7 @@ ratIt: pcb_netlist_changed(0); - return (pcb_rat_new(PCB->Data, pcb_crosshair.AttachedLine.Point1.X, + return (pcb_rat_new(PCB->Data, -1, pcb_crosshair.AttachedLine.Point1.X, pcb_crosshair.AttachedLine.Point1.Y, pcb_crosshair.AttachedLine.Point2.X, pcb_crosshair.AttachedLine.Point2.Y, group1, group2, conf_core.appearance.rat_thickness, pcb_no_flags()));