Index: trunk/src/funchash_core_list.h =================================================================== --- trunk/src/funchash_core_list.h (revision 21863) +++ trunk/src/funchash_core_list.h (revision 21864) @@ -168,6 +168,7 @@ action_entry(ToggleCheckPlanes) action_entry(ToggleUniqueNames) action_entry(ToggleStroke) +action_entry(Unselect) action_entry(Via) action_entry(Warp) action_entry(Zoom) Index: trunk/src/netlist.c =================================================================== --- trunk/src/netlist.c (revision 21863) +++ trunk/src/netlist.c (revision 21864) @@ -119,7 +119,7 @@ } -static unsigned long pcb_netlist_setflg(pcb_lib_menu_t *net, pcb_lib_entry_t *pin, pcb_flag_values_t f) +static unsigned long pcb_netlist_setclrflg(pcb_lib_menu_t *net, pcb_lib_entry_t *pin, pcb_flag_values_t setf, pcb_flag_values_t clrf) { pcb_find_t fctx; pcb_any_obj_t *o = pcb_pin_name_to_obj(pin); @@ -129,7 +129,8 @@ return 0; memset(&fctx, 0, sizeof(fctx)); - fctx.flag_set = f; + fctx.flag_set = setf; + fctx.flag_clr = clrf; fctx.flag_set_undoable = 1; fctx.consider_rats = 1; res = pcb_find_from_obj(&fctx, PCB->Data, o); @@ -139,14 +140,19 @@ void pcb_netlist_find(pcb_lib_menu_t * net, pcb_lib_entry_t * pin) { - pcb_netlist_setflg(net, pin, PCB_FLAG_FOUND); + pcb_netlist_setclrflg(net, pin, PCB_FLAG_FOUND, 0); } void pcb_netlist_select(pcb_lib_menu_t * net, pcb_lib_entry_t * pin) { - pcb_netlist_setflg(net, pin, PCB_FLAG_SELECTED); + pcb_netlist_setclrflg(net, pin, PCB_FLAG_SELECTED, 0); } +void pcb_netlist_unselect(pcb_lib_menu_t * net, pcb_lib_entry_t * pin) +{ + pcb_netlist_setclrflg(net, pin, 0, PCB_FLAG_SELECTED); +} + void pcb_netlist_rats(pcb_lib_menu_t * net, pcb_lib_entry_t * pin) { net->Name[0] = ' '; Index: trunk/src/netlist.h =================================================================== --- trunk/src/netlist.h (revision 21863) +++ trunk/src/netlist.h (revision 21864) @@ -69,6 +69,7 @@ int pcb_pin_name_to_xy(pcb_lib_entry_t *pin, pcb_coord_t *x, pcb_coord_t *y); void pcb_netlist_find(pcb_lib_menu_t *net, pcb_lib_entry_t *pin); void pcb_netlist_select(pcb_lib_menu_t *net, pcb_lib_entry_t *pin); +void pcb_netlist_unselect(pcb_lib_menu_t * net, pcb_lib_entry_t * pin); void pcb_netlist_rats(pcb_lib_menu_t *net, pcb_lib_entry_t *pin); void pcb_netlist_norats(pcb_lib_menu_t *net, pcb_lib_entry_t *pin); void pcb_netlist_clear(pcb_lib_menu_t *net, pcb_lib_entry_t *pin); Index: trunk/src/netlist_act.c =================================================================== --- trunk/src/netlist_act.c (revision 21863) +++ trunk/src/netlist_act.c (revision 21864) @@ -184,6 +184,7 @@ switch(op) { case F_Find: func = pcb_netlist_find; break; case F_Select: func = pcb_netlist_select; break; + case F_Unselect: func = pcb_netlist_unselect; break; case F_Rats: func = pcb_netlist_rats; break; case F_NoRats: func = pcb_netlist_norats; break; case F_Style: func = (NFunc) pcb_netlist_style; break;