Index: trunk/src/select.c =================================================================== --- trunk/src/select.c (revision 4185) +++ trunk/src/select.c (revision 4186) @@ -77,11 +77,24 @@ } if (PCB->PinOn) DrawElementPinsAndPads(element); - if (PCB->PinOn) - DrawElementPinsAndPads(element); } } +void pcb_select_element_name(ElementType *element, pcb_change_flag_t how, int redraw) +{ + /* select all names of the element */ + ELEMENTTEXT_LOOP(element); + { + AddObjectToFlagUndoList(PCB_TYPE_ELEMENT_NAME, element, text, text); + CHANGE_FLAG(how, PCB_FLAG_SELECTED, text); + } + END_LOOP; + + if (redraw) + DrawElementName(element); +} + + /* --------------------------------------------------------------------------- * toggles the selection of any kind of object * the different types are defined by search.h @@ -172,20 +185,9 @@ break; case PCB_TYPE_ELEMENT_NAME: - { - ElementTypePtr element = (ElementTypePtr) ptr1; + pcb_select_element_name((ElementType *) ptr1, PCB_CHGFLG_TOGGLE, 1); + break; - /* select all names of the element */ - ELEMENTTEXT_LOOP(element); - { - AddObjectToFlagUndoList(PCB_TYPE_ELEMENT_NAME, element, text, text); - TOGGLE_FLAG(PCB_FLAG_SELECTED, text); - } - END_LOOP; - DrawElementName(element); - break; - } - case PCB_TYPE_ELEMENT: pcb_select_element((ElementType *) ptr1, PCB_CHGFLG_TOGGLE, 1); break; Index: trunk/src/select.h =================================================================== --- trunk/src/select.h (revision 4185) +++ trunk/src/select.h (revision 4186) @@ -51,7 +51,8 @@ /* New API */ -/* Toggle the selection of an element */ +/* Change the selection of an element or element name (these have side effects) */ void pcb_select_element(ElementType *element, pcb_change_flag_t how, int redraw); +void pcb_select_element_name(ElementType *element, pcb_change_flag_t how, int redraw); #endif