Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 21880) +++ trunk/src/gui_act.c (revision 21881) @@ -234,12 +234,18 @@ pcb_notify_crosshair_change(pcb_false); conf_toggle_editor(auto_drc); if (conf_core.editor.auto_drc && conf_core.editor.mode == PCB_MODE_LINE) { - if (pcb_reset_conns(pcb_true)) { + if (pcb_data_clear_flag(PCB->Data, PCB_FLAG_FOUND, 1, 1) > 0) { pcb_undo_inc_serial(); pcb_draw(); } - if (pcb_crosshair.AttachedLine.State != PCB_CH_STATE_FIRST) - pcb_lookup_conn(pcb_crosshair.AttachedLine.Point1.X, pcb_crosshair.AttachedLine.Point1.Y, pcb_true, 1, PCB_FLAG_FOUND); + if (pcb_crosshair.AttachedLine.State != PCB_CH_STATE_FIRST) { + pcb_find_t fctx; + memset(&fctx, 0, sizeof(fctx)); + fctx.flag_set = PCB_FLAG_FOUND; + fctx.flag_chg_undoable = 1; + pcb_find_from_xy(&fctx, PCB->Data, pcb_crosshair.X, pcb_crosshair.Y); + pcb_find_free(&fctx); + } } pcb_notify_crosshair_change(pcb_true); break; Index: trunk/src/rats_act.c =================================================================== --- trunk/src/rats_act.c (revision 21880) +++ trunk/src/rats_act.c (revision 21881) @@ -156,7 +156,7 @@ break; case F_Reset: - if (pcb_reset_conns(pcb_true)) { + if (pcb_data_clear_flag(PCB->Data, PCB_FLAG_FOUND, 1, 1) > 0) { pcb_undo_inc_serial(); pcb_draw(); } Index: trunk/src/tool_line.c =================================================================== --- trunk/src/tool_line.c (revision 21880) +++ trunk/src/tool_line.c (revision 21881) @@ -70,7 +70,7 @@ } else { if (conf_core.editor.auto_drc) { - if (pcb_reset_conns(pcb_true)) { + if (pcb_data_clear_flag(PCB->Data, PCB_FLAG_FOUND, 1, 1) > 0) { pcb_undo_inc_serial(); pcb_draw(); } @@ -107,8 +107,13 @@ break; } if (conf_core.editor.auto_drc) { + pcb_find_t fctx; type = pcb_search_screen(pcb_crosshair.X, pcb_crosshair.Y, PCB_OBJ_PSTK | PCB_OBJ_SUBC_PART, &ptr1, &ptr2, &ptr3); - pcb_lookup_conn(pcb_crosshair.X, pcb_crosshair.Y, pcb_true, 1, PCB_FLAG_FOUND); + memset(&fctx, 0, sizeof(fctx)); + fctx.flag_set = PCB_FLAG_FOUND; + fctx.flag_chg_undoable = 1; + pcb_find_from_xy(&fctx, PCB->Data, pcb_crosshair.X, pcb_crosshair.Y); + pcb_find_free(&fctx); } if (type == PCB_OBJ_PSTK) { pcb_pstk_t *pstk = (pcb_pstk_t *)ptr2;