Index: trunk/src/tool.c =================================================================== --- trunk/src/tool.c (revision 27112) +++ trunk/src/tool.c (revision 27113) @@ -311,7 +311,7 @@ } pcb_crosshair.AttachedObject.X = PlaceX - mx; pcb_crosshair.AttachedObject.Y = PlaceY - my; - if (!pcb_marked.status || conf_core.editor.local_ref) + if ((!pcb_marked.status || conf_core.editor.local_ref) && !pcb_marked.user_placed) pcb_crosshair_set_local_ref(PlaceX - mx, PlaceY - my, pcb_true); pcb_crosshair.AttachedObject.State = PCB_CH_STATE_SECOND; Index: trunk/src/tool_arc.c =================================================================== --- trunk/src/tool_arc.c (revision 27112) +++ trunk/src/tool_arc.c (revision 27113) @@ -69,7 +69,8 @@ pcb_added_lines = 0; if (pcb_tool_next_id != PCB_MODE_LINE) { pcb_crosshair.AttachedBox.State = PCB_CH_STATE_FIRST; - pcb_crosshair_set_local_ref(0, 0, pcb_false); + if (!pcb_marked.user_placed) + pcb_crosshair_set_local_ref(0, 0, pcb_false); } pcb_notify_crosshair_change(pcb_true); } Index: trunk/src/tool_line.c =================================================================== --- trunk/src/tool_line.c (revision 27112) +++ trunk/src/tool_line.c (revision 27113) @@ -89,7 +89,8 @@ pcb_route_reset(&pcb_crosshair.Route); if (pcb_tool_next_id != PCB_MODE_ARC) { pcb_crosshair.AttachedLine.State = PCB_CH_STATE_FIRST; - pcb_crosshair_set_local_ref(0, 0, pcb_false); + if (!pcb_marked.user_placed) + pcb_crosshair_set_local_ref(0, 0, pcb_false); } pcb_notify_crosshair_change(pcb_true); } @@ -100,8 +101,8 @@ int type = PCB_OBJ_VOID; void *ptr1, *ptr2, *ptr3; - if (!pcb_marked.status || conf_core.editor.local_ref) - pcb_crosshair_set_local_ref(pcb_crosshair.X, pcb_crosshair.Y, pcb_true); + if ((!pcb_marked.status || conf_core.editor.local_ref) && !pcb_marked.user_placed) + pcb_crosshair_set_local_ref(pcb_crosshair.X, pcb_crosshair.Y, pcb_true); switch (pcb_crosshair.AttachedLine.State) { case PCB_CH_STATE_FIRST: /* first point */ TODO("subc: this should work on heavy terminals too!") @@ -388,7 +389,8 @@ pcb_undo(pcb_true); /* undo the connection find */ pcb_crosshair.AttachedLine.State = PCB_CH_STATE_FIRST; pcb_route_reset(&pcb_crosshair.Route); - pcb_crosshair_set_local_ref(0, 0, pcb_false); + if (!pcb_marked.user_placed) + pcb_crosshair_set_local_ref(0, 0, pcb_false); return pcb_false; } if (pcb_crosshair.AttachedLine.State == PCB_CH_STATE_THIRD) { Index: trunk/src/tool_move.c =================================================================== --- trunk/src/tool_move.c (revision 27112) +++ trunk/src/tool_move.c (revision 27113) @@ -80,7 +80,8 @@ dy = pcb_crosshair.AttachedObject.ty - pcb_crosshair.AttachedObject.Y; if ((dx != 0) || (dy != 0)) { pcb_move_obj_and_rubberband(pcb_crosshair.AttachedObject.Type, pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3, dx, dy); - pcb_crosshair_set_local_ref(0, 0, pcb_false); + if (!pcb_marked.user_placed) + pcb_crosshair_set_local_ref(0, 0, pcb_false); pcb_subc_as_board_update(PCB); pcb_board_set_changed_flag(pcb_true); } Index: trunk/src/tool_poly.c =================================================================== --- trunk/src/tool_poly.c (revision 27112) +++ trunk/src/tool_poly.c (revision 27113) @@ -87,6 +87,7 @@ } if (conf_core.editor.orthogonal_moves) { +TODO("mark: remove this"); /* set the mark to the new starting point so ortho works */ pcb_marked.X = pcb_tool_note.X; pcb_marked.Y = pcb_tool_note.Y; Index: trunk/src/tool_polyhole.c =================================================================== --- trunk/src/tool_polyhole.c (revision 27112) +++ trunk/src/tool_polyhole.c (revision 27113) @@ -88,6 +88,7 @@ } if (conf_core.editor.orthogonal_moves) { +TODO("mark: remove this"); /* set the mark to the new starting point so ortho works */ pcb_marked.X = pcb_tool_note.X; pcb_marked.Y = pcb_tool_note.Y;