Index: trunk/src/change_act.c =================================================================== --- trunk/src/change_act.c (revision 29922) +++ trunk/src/change_act.c (revision 29923) @@ -5,7 +5,7 @@ * (this file is based on PCB, interactive printed circuit board design) * Copyright (C) 1994,1995,1996 Thomas Nau * Copyright (C) 1997, 1998, 1999, 2000, 2001 Harry Eaton - * Copyright (C) 2018,2019 Tibor 'Igor2' Palinkas + * Copyright (C) 2018,2019,2020 Tibor 'Igor2' Palinkas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -51,6 +51,7 @@ #include #include "route_style.h" #include +#include "obj_subc_parent.h" #define PCB (do not use PCB directly) @@ -510,6 +511,16 @@ pcb_actionva(PCB_ACT_HIDLIB, "DeleteRats", "AllRats", NULL); } } + if (op == F_Object) { + pcb_subc_t *subc = pcb_obj_parent_subc(ptr2); + if (subc->auto_termname_display) { + pcb_undo_add_obj_to_flag(ptr2); + PCB_FLAG_SET(PCB_FLAG_TERMNAME, (pcb_any_obj_t *)ptr2); + pcb_board_set_changed_flag(pcb_true); + pcb_undo_inc_serial(); + pcb_draw(); + } + } break; } Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 29922) +++ trunk/src/gui_act.c (revision 29923) @@ -328,6 +328,7 @@ opctx.chgflag.how = PCB_CHGFLG_TOGGLE; opctx.chgflag.flag = PCB_FLAG_TERMNAME; pcb_subc_op(PCB->Data, (pcb_subc_t *)obj, &ChgFlagFunctions, &opctx, 0); + ((pcb_subc_t *)obj)->auto_termname_display = !((pcb_subc_t *)obj)->auto_termname_display; pcb_undo_inc_serial(); return 0; break; Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 29922) +++ trunk/src/obj_subc.c (revision 29923) @@ -699,6 +699,13 @@ pcb_render->draw_line(GC, DX + PCB_EMARK_SIZE, DY, DX, DY - PCB_EMARK_SIZE); pcb_render->draw_line(GC, DX - PCB_EMARK_SIZE, DY, DX, DY + PCB_EMARK_SIZE); pcb_render->draw_line(GC, DX + PCB_EMARK_SIZE, DY, DX, DY + PCB_EMARK_SIZE); + + if (sc->auto_termname_display) { +#define OFX (PCB_EMARK_SIZE/5) + pcb_render->draw_line(GC, DX-OFX, DY-PCB_EMARK_SIZE/3, DX-OFX, DY+PCB_EMARK_SIZE/3); + pcb_render->draw_line(GC, DX-OFX, DY+PCB_EMARK_SIZE/3, DX-OFX+PCB_EMARK_SIZE/3, DY+PCB_EMARK_SIZE/3); +#undef OFX + } } void pcb_xordraw_subc(pcb_subc_t *sc, pcb_coord_t DX, pcb_coord_t DY, int use_curr_side) Index: trunk/src/obj_subc.h =================================================================== --- trunk/src/obj_subc.h (revision 29922) +++ trunk/src/obj_subc.h (revision 29923) @@ -56,6 +56,7 @@ const char *refdes; /* cached from attributes for fast lookup */ int part_changed_inhibit; unsigned part_changed_bbox_dirty:1; /* part_changed_inhibit_dec() should recalculate the bbox */ + unsigned auto_termname_display:1; /* display bit, not saved or loaded, only toggled by Display() on subc */ gdl_elem_t link; };