Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 9149) +++ trunk/src/obj_subc.c (revision 9150) @@ -149,7 +149,7 @@ pcb_layer_t *sl = src->data->Layer + n; pcb_layer_t *dl = sc->data->Layer + n; pcb_line_t *line, *nline; - pcb_text_t *text; + pcb_text_t *text, *ntext; pcb_polygon_t *poly; pcb_arc_t *arc, *narc; gdl_iterator_t it; @@ -175,11 +175,13 @@ arclist_foreach(&sl->Arc, &it, arc) { narc = pcb_arc_dup(dl, arc); if (narc != NULL) - PCB_SET_PARENT(arc, layer, dl); + PCB_SET_PARENT(narc, layer, dl); } textlist_foreach(&sl->Text, &it, text) { -/* PCB_SET_PARENT(text, layer, dl);*/ + ntext = pcb_text_dup(dl, text); + if (ntext != NULL) + PCB_SET_PARENT(ntext, layer, dl); } polylist_foreach(&sl->Polygon, &it, poly) { Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 9149) +++ trunk/src/obj_text.c (revision 9150) @@ -101,6 +101,11 @@ return (text); } +pcb_text_t *pcb_text_dup(pcb_layer_t *dst, pcb_text_t *src) +{ + return pcb_text_new(dst, pcb_font(PCB, src->fid, 1), src->X, src->Y, src->Direction, src->Scale, src->TextString, src->Flags); +} + void pcb_add_text_on_layer(pcb_layer_t *Layer, pcb_text_t *text, pcb_font_t *PCBFont) { /* calculate size of the bounding box */ Index: trunk/src/obj_text.h =================================================================== --- trunk/src/obj_text.h (revision 9149) +++ trunk/src/obj_text.h (revision 9150) @@ -47,6 +47,7 @@ pcb_text_t *pcb_text_alloc(pcb_layer_t * layer); void pcb_text_free(pcb_text_t * data); pcb_text_t *pcb_text_new(pcb_layer_t *Layer, pcb_font_t *PCBFont, pcb_coord_t X, pcb_coord_t Y, unsigned Direction, int Scale, const char *TextString, pcb_flag_t Flags); +pcb_text_t *pcb_text_dup(pcb_layer_t *dst, pcb_text_t *src); void *pcb_text_destroy(pcb_layer_t *Layer, pcb_text_t *Text);