Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 10735) +++ trunk/src/draw.c (revision 10736) @@ -465,9 +465,17 @@ if (conf_core.editor.check_planes) return; - /* draw all visible lines this layer */ - pcb_r_search(Layer->line_tree, screen, NULL, pcb_line_draw_callback, Layer, NULL); + lflg = pcb_layer_flags_(PCB, Layer); + if (lflg & PCB_LYT_COPPER) { + /* draw all visible lines this layer - with terminal gfx */ + pcb_r_search(Layer->line_tree, screen, NULL, pcb_line_draw_term_callback, Layer, NULL); + } + else { + /* draw all visible lines this layer */ + pcb_r_search(Layer->line_tree, screen, NULL, pcb_line_draw_callback, Layer, NULL); + } + /* draw the layer arcs on screen */ pcb_r_search(Layer->arc_tree, screen, NULL, pcb_arc_draw_callback, Layer, NULL); @@ -474,7 +482,6 @@ /* draw the layer text on screen */ pcb_r_search(Layer->text_tree, screen, NULL, pcb_text_draw_callback, Layer, NULL); - lflg = pcb_layer_flags_(PCB, Layer); /* The implicit outline rectangle (or automatic outline rectanlge). We should check for pcb_gui->gui here, but it's kinda cool seeing the Index: trunk/src/obj_elem.c =================================================================== --- trunk/src/obj_elem.c (revision 10735) +++ trunk/src/obj_elem.c (revision 10736) @@ -1873,7 +1873,7 @@ /* draw lines, arcs, text and pins */ PCB_ELEMENT_PCB_LINE_LOOP(element); { - pcb_line_draw_(line); + pcb_line_draw_(line, 0); } PCB_END_LOOP; PCB_ARC_LOOP(element); Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 10735) +++ trunk/src/obj_line.c (revision 10736) @@ -899,12 +899,12 @@ } -void pcb_line_draw_(pcb_line_t * line) +void pcb_line_draw_(pcb_line_t *line, int allow_term_gfx) { PCB_DRAW_BBOX(line); pcb_gui->set_line_cap(Output.fgGC, Trace_Cap); if (!conf_core.editor.thin_draw) { - if (line->term != NULL) { + if ((line->term != NULL) && (allow_term_gfx)) { pcb_gui->set_line_width(Output.padGC, line->Thickness); pcb_gui->draw_line(Output.padGC, line->Point1.X, line->Point1.Y, line->Point2.X, line->Point2.Y); pcb_gui->set_line_width(Output.fgGC, line->Thickness/4); @@ -924,7 +924,7 @@ } } -void pcb_line_draw(pcb_layer_t * layer, pcb_line_t * line) +static void pcb_line_draw(pcb_layer_t *layer, pcb_line_t *line, int allow_term_gfx) { const char *color; char buf[sizeof("#XXXXXX")]; @@ -947,7 +947,7 @@ } pcb_gui->set_color(Output.fgGC, color); - pcb_line_draw_(line); + pcb_line_draw_(line, allow_term_gfx); } pcb_r_dir_t pcb_line_draw_callback(const pcb_box_t * b, void *cl) @@ -957,10 +957,21 @@ if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(line->parent_type, &line->parent)) return PCB_R_DIR_NOT_FOUND; - pcb_line_draw((pcb_layer_t *)cl, line); + pcb_line_draw((pcb_layer_t *)cl, line, 0); return PCB_R_DIR_FOUND_CONTINUE; } +pcb_r_dir_t pcb_line_draw_term_callback(const pcb_box_t * b, void *cl) +{ + pcb_line_t *line = (pcb_line_t *)b; + + if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(line->parent_type, &line->parent)) + return PCB_R_DIR_NOT_FOUND; + + pcb_line_draw((pcb_layer_t *)cl, line, 1); + return PCB_R_DIR_FOUND_CONTINUE; +} + /* erases a line on a layer */ void pcb_line_invalidate_erase(pcb_line_t *Line) { Index: trunk/src/obj_line_draw.h =================================================================== --- trunk/src/obj_line_draw.h (revision 10735) +++ trunk/src/obj_line_draw.h (revision 10736) @@ -29,10 +29,10 @@ /* Include rtree.h for this */ #ifdef PCB_RTREE_H pcb_r_dir_t pcb_line_draw_callback(const pcb_box_t * b, void *cl); +pcb_r_dir_t pcb_line_draw_term_callback(const pcb_box_t * b, void *cl); #endif -void pcb_line_draw_(pcb_line_t * line); -void pcb_line_draw(pcb_layer_t * layer, pcb_line_t * line); +void pcb_line_draw_(pcb_line_t *line, int allow_term_gfx); void pcb_line_invalidate_erase(pcb_line_t *Line); void pcb_line_invalidate_draw(pcb_layer_t *Layer, pcb_line_t *Line); void pcb_line_draw_label(pcb_line_t *line); Index: trunk/src/obj_rat.c =================================================================== --- trunk/src/obj_rat.c (revision 10735) +++ trunk/src/obj_rat.c (revision 10736) @@ -253,7 +253,7 @@ pcb_gui->draw_arc(Output.fgGC, rat->Point1.X, rat->Point1.Y, w * 2, w * 2, 0, 360); } else - pcb_line_draw_((pcb_line_t *) rat); + pcb_line_draw_((pcb_line_t *) rat, 0); return PCB_R_DIR_FOUND_CONTINUE; } Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 10735) +++ trunk/src/obj_text.c (revision 10736) @@ -653,7 +653,7 @@ if (xordraw) pcb_gui->draw_line(pcb_crosshair.GC, xordx + newline.Point1.X, xordy + newline.Point1.Y, xordx + newline.Point2.X, xordy + newline.Point2.Y); else - pcb_line_draw_(&newline); + pcb_line_draw_(&newline, 0); } /* draw the arcs */ Index: trunk/src_plugins/draw_csect/draw_csect.c =================================================================== --- trunk/src_plugins/draw_csect/draw_csect.c (revision 10735) +++ trunk/src_plugins/draw_csect/draw_csect.c (revision 10736) @@ -122,7 +122,7 @@ l.Thickness = PCB_MM_TO_COORD(thick); if (l.Thickness == 0) l.Thickness = 1; - pcb_line_draw_(&l); + pcb_line_draw_(&l, 0); } /* draw a line of a specific thickness */ @@ -136,7 +136,7 @@ l.Thickness = PCB_MM_TO_COORD(thick); if (l.Thickness == 0) l.Thickness = 1; - pcb_line_draw_(&l); + pcb_line_draw_(&l, 0); } Index: trunk/src_plugins/draw_fontsel/draw_fontsel.c =================================================================== --- trunk/src_plugins/draw_fontsel/draw_fontsel.c (revision 10735) +++ trunk/src_plugins/draw_fontsel/draw_fontsel.c (revision 10736) @@ -71,7 +71,7 @@ l.Point2.X = PCB_MM_TO_COORD(x2); l.Point2.Y = PCB_MM_TO_COORD(y2); l.Thickness = PCB_MM_TO_COORD(thick); - pcb_line_draw_(&l); + pcb_line_draw_(&l, 0); } static void dchkbox(pcb_hid_gc_t gc, int x0, int y0, int checked) Index: trunk/src_plugins/lib_gtk_common/wt_preview.c =================================================================== --- trunk/src_plugins/lib_gtk_common/wt_preview.c (revision 10735) +++ trunk/src_plugins/lib_gtk_common/wt_preview.c (revision 10736) @@ -86,13 +86,13 @@ pcb_element_copy(NULL, &preview->element, element, FALSE, 0, 0); PCB_PIN_LOOP(&preview->element); { - PCB_FLAG_SET(PCB_FLAG_DISPLAYNAME, pin); + PCB_FLAG_SET(PCB_FLAG_TERMNAME, pin); } PCB_END_LOOP; PCB_PAD_LOOP(&preview->element); { - PCB_FLAG_SET(PCB_FLAG_DISPLAYNAME, pad); + PCB_FLAG_SET(PCB_FLAG_TERMNAME, pad); } PCB_END_LOOP;