Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 15037) +++ trunk/src/draw.c (revision 15038) @@ -711,6 +711,9 @@ void pcb_erase_obj(int type, void *lptr, void *ptr) { + if (pcb_hidden_floater((pcb_any_obj_t *)ptr)) + return; + switch (type) { case PCB_TYPE_PSTK: pcb_pstk_invalidate_erase((pcb_pstk_t *) ptr); @@ -753,6 +756,9 @@ void pcb_draw_obj(pcb_any_obj_t *obj) { + if (pcb_hidden_floater(obj)) + return; + switch (obj->type) { case PCB_OBJ_VIA: if (PCB->ViaOn) @@ -811,6 +817,9 @@ static void pcb_draw_obj_label(pcb_layergrp_id_t gid, pcb_any_obj_t *obj) { + if (pcb_hidden_floater(obj)) + return; + /* do not show layer-object labels of the other side on non-pinout views */ if ((!pcb_draw_doing_pinout) && (obj->parent_type == PCB_PARENT_LAYER)) { pcb_layer_t *ly = pcb_layer_get_real(obj->parent.layer); Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 15037) +++ trunk/src/obj_arc.c (revision 15038) @@ -920,6 +920,9 @@ { pcb_arc_t *arc = (pcb_arc_t *)b; + if (pcb_hidden_floater((pcb_any_obj_t*)b)) + return PCB_R_DIR_FOUND_CONTINUE; + if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(arc->parent_type, &arc->parent)) return PCB_R_DIR_NOT_FOUND; Index: trunk/src/obj_common.h =================================================================== --- trunk/src/obj_common.h (revision 15037) +++ trunk/src/obj_common.h (revision 15038) @@ -172,6 +172,9 @@ /* Returns the first invalid character of an ID (terminal, refdes) or NULL */ const char *pcb_obj_id_invalid(const char *id); +#define pcb_hidden_floater(obj) (conf_core.editor.hide_names && PCB_FLAG_TEST(PCB_FLAG_FLOATER, (obj))) + + /* set const char *dst to a color, depending on the bound layer type: top silk and copper get the color of the first crresponding layer from current PCB, the rest get the far-side color; Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 15037) +++ trunk/src/obj_line.c (revision 15038) @@ -1064,6 +1064,9 @@ { pcb_line_t *line = (pcb_line_t *)b; + if (pcb_hidden_floater((pcb_any_obj_t*)b)) + return PCB_R_DIR_FOUND_CONTINUE; + if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(line->parent_type, &line->parent)) return PCB_R_DIR_NOT_FOUND; Index: trunk/src/obj_pinvia.c =================================================================== --- trunk/src/obj_pinvia.c (revision 15037) +++ trunk/src/obj_pinvia.c (revision 15038) @@ -1083,6 +1083,9 @@ pcb_r_dir_t pcb_pin_draw_callback(const pcb_box_t * b, void *cl) { + if (pcb_hidden_floater((pcb_any_obj_t*)b)) + return PCB_R_DIR_FOUND_CONTINUE; + pcb_pin_draw((pcb_pin_t *) b, pcb_false); return PCB_R_DIR_FOUND_CONTINUE; } @@ -1089,6 +1092,9 @@ static void draw_pin_name(pcb_pin_t *pin) { + if (pcb_hidden_floater((pcb_any_obj_t*)pin)) + return PCB_R_DIR_FOUND_CONTINUE; + if (!PCB_FLAG_TEST(PCB_FLAG_HOLE, pin) && PCB_FLAG_TEST(PCB_FLAG_TERMNAME, pin)) _draw_pv_name(pin); } @@ -1112,6 +1118,9 @@ static void draw_via(pcb_pin_t *via, pcb_bool draw_hole) { + if (pcb_hidden_floater((pcb_any_obj_t*)via)) + return PCB_R_DIR_FOUND_CONTINUE; + SetPVColor(via, PCB_TYPE_VIA); _draw_pv(via, draw_hole); } @@ -1120,6 +1129,8 @@ { pcb_pin_t *via = (pcb_pin_t *)b; + if (pcb_hidden_floater((pcb_any_obj_t*)b)) + return PCB_R_DIR_FOUND_CONTINUE; if (PCB->SubcPartsOn || !pcb_gobj_parent_subc(via->parent_type, &via->parent)) draw_via(via, pcb_false); return PCB_R_DIR_FOUND_CONTINUE; Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 15037) +++ trunk/src/obj_poly.c (revision 15038) @@ -1099,6 +1099,9 @@ pcb_draw_info_t *i = cl; pcb_poly_t *polygon = (pcb_poly_t *) b; + if (pcb_hidden_floater((pcb_any_obj_t*)b)) + return PCB_R_DIR_FOUND_CONTINUE; + if (!polygon->Clipped) return PCB_R_DIR_NOT_FOUND; Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 15037) +++ trunk/src/obj_pstk.c (revision 15038) @@ -391,6 +391,9 @@ pcb_pstk_shape_t *shape; pcb_layergrp_t *grp = NULL; + if (pcb_hidden_floater((pcb_any_obj_t*)b)) + return PCB_R_DIR_FOUND_CONTINUE; + if (!PCB->SubcPartsOn && pcb_gobj_parent_subc(ps->parent_type, &ps->parent)) return PCB_R_DIR_NOT_FOUND; Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 15037) +++ trunk/src/obj_text.c (revision 15038) @@ -970,6 +970,9 @@ pcb_layer_t *layer = cl; pcb_text_t *text = (pcb_text_t *) b; + if (pcb_hidden_floater((pcb_any_obj_t*)b)) + return PCB_R_DIR_FOUND_CONTINUE; + if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(text->parent_type, &text->parent)) return PCB_R_DIR_FOUND_CONTINUE;