Index: search.c =================================================================== --- search.c (revision 31351) +++ search.c (revision 31352) @@ -36,6 +36,7 @@ #include +#include "actions_pcb.h" #include "board.h" #include "data.h" #include @@ -1685,7 +1686,11 @@ } if (pcb_obj_list_vect.used > 1) { - + long idx = rnd_actionva(&PCB->hidlib, "dlg_obj_list", NULL); + if ((idx >= 0) && (idx < pcb_obj_list_vect.used)) { + obj = pcb_obj_list_vect.array[idx]; + goto found; + } } vtp0_uninit(&pcb_obj_list_vect); @@ -1698,7 +1703,14 @@ return obj->type; } +int pcb_search_screen_maybe_selector(rnd_coord_t X, rnd_coord_t Y, int Type, void **Result1, void **Result2, void **Result3) +{ + int sr = pcb_search_screen_selector(X, Y, Type, Result1, Result2, Result3); + if (sr != PCB_OBJ_VOID) return sr; + return pcb_search_screen(X, Y, Type, Result1, Result2, Result3); +} + int pcb_lines_intersect(rnd_coord_t ax1, rnd_coord_t ay1, rnd_coord_t ax2, rnd_coord_t ay2, rnd_coord_t bx1, rnd_coord_t by1, rnd_coord_t bx2, rnd_coord_t by2) { /* TODO: this should be long double if rnd_coord_t is 64 bits */