Index: tool_insert.c =================================================================== --- tool_insert.c (revision 31352) +++ tool_insert.c (revision 31353) @@ -66,7 +66,7 @@ /* first notify, lookup object */ case PCB_CH_STATE_FIRST: pcb_crosshair.AttachedObject.Type = - pcb_search_screen(hl->tool_x, hl->tool_y, PCB_INSERT_TYPES, + pcb_search_screen_maybe_selector(hl->tool_x, hl->tool_y, PCB_INSERT_TYPES, &pcb_crosshair.AttachedObject.Ptr1, &pcb_crosshair.AttachedObject.Ptr2, &pcb_crosshair.AttachedObject.Ptr3); if (pcb_crosshair.AttachedObject.Type != PCB_OBJ_VOID) { Index: tool_lock.c =================================================================== --- tool_lock.c (revision 31352) +++ tool_lock.c (revision 31353) @@ -52,7 +52,7 @@ void *ptr1, *ptr2, *ptr3; int type; - type = pcb_search_screen(hl->tool_x, hl->tool_y, PCB_OBJ_CLASS_LOCK, &ptr1, &ptr2, &ptr3); + type = pcb_search_screen_maybe_selector(hl->tool_x, hl->tool_y, PCB_OBJ_CLASS_LOCK, &ptr1, &ptr2, &ptr3); if (type == PCB_OBJ_SUBC) { pcb_subc_t *subc = (pcb_subc_t *)ptr2; Index: tool_polyhole.c =================================================================== --- tool_polyhole.c (revision 31352) +++ tool_polyhole.c (revision 31353) @@ -61,7 +61,7 @@ case PCB_CH_STATE_FIRST: pcb_crosshair.AttachedPolygon_pts = 0; pcb_crosshair.AttachedObject.Type = - pcb_search_screen(hl->tool_x, hl->tool_y, PCB_OBJ_POLY, + pcb_search_screen_maybe_selector(hl->tool_x, hl->tool_y, PCB_OBJ_POLY, &pcb_crosshair.AttachedObject.Ptr1, &pcb_crosshair.AttachedObject.Ptr2, &pcb_crosshair.AttachedObject.Ptr3); if (pcb_crosshair.AttachedObject.Type == PCB_OBJ_VOID) { Index: tool_remove.c =================================================================== --- tool_remove.c (revision 31352) +++ tool_remove.c (revision 31353) @@ -53,7 +53,7 @@ pcb_any_obj_t *obj; int type; - if ((type = pcb_search_screen(hl->tool_x, hl->tool_y, PCB_REMOVE_TYPES | PCB_LOOSE_SUBC(PCB) | PCB_OBJ_FLOATER, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { + if ((type = pcb_search_screen_maybe_selector(hl->tool_x, hl->tool_y, PCB_REMOVE_TYPES | PCB_LOOSE_SUBC(PCB) | PCB_OBJ_FLOATER, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { obj = (pcb_any_obj_t *)ptr2; if (PCB_FLAG_TEST(PCB_FLAG_LOCK, obj)) { rnd_message(RND_MSG_WARNING, "Sorry, %s object is locked\n", pcb_obj_type_name(obj->type)); Index: tool_thermal.c =================================================================== --- tool_thermal.c (revision 31352) +++ tool_thermal.c (revision 31353) @@ -94,12 +94,12 @@ void *ptr1, *ptr2, *ptr3; int type; - if (((type = pcb_search_screen(hl->tool_x, hl->tool_y, PCB_OBJ_CLASS_PIN, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) + if (((type = pcb_search_screen_maybe_selector(hl->tool_x, hl->tool_y, PCB_OBJ_CLASS_PIN, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) && !PCB_FLAG_TEST(PCB_FLAG_HOLE, (pcb_any_obj_t *) ptr3)) { if (type == PCB_OBJ_PSTK) pcb_tool_thermal_on_obj(ptr2, PCB_CURRLID(pcb)); } - else if (((type = pcb_search_screen(hl->tool_x, hl->tool_y, PCB_OBJ_CLASS_REAL, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) + else if (((type = pcb_search_screen_maybe_selector(hl->tool_x, hl->tool_y, PCB_OBJ_CLASS_REAL, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) && !PCB_FLAG_TEST(PCB_FLAG_HOLE, (pcb_any_obj_t *) ptr3)) { pcb_tool_thermal_on_obj(ptr2, PCB_CURRLID(pcb)); }