Index: src_plugins/rbs_routing/seq.c =================================================================== --- src_plugins/rbs_routing/seq.c (revision 38825) +++ src_plugins/rbs_routing/seq.c (revision 38826) @@ -71,7 +71,7 @@ return 0; } -int rbsr_seq_consider(rbsr_seq_t *rbsq, rnd_coord_t tx, rnd_coord_t ty) +int rbsr_seq_consider(rbsr_seq_t *rbsq, rnd_coord_t tx, rnd_coord_t ty, int *need_redraw_out) { grbs_point_t *end; rnd_coord_t ptcx, ptcy; @@ -87,6 +87,7 @@ rbsq->consider.dir = RBS_ADIR_invalid; if (need_redraw) rbsr_seq_redraw(rbsq); + *need_redraw_out = need_redraw; return -1; } @@ -117,12 +118,15 @@ dir = GRBS_ADIR_INC; } - if ((rbsq->consider.pt == end) && (rbsq->consider.dir == dir)) + if ((rbsq->consider.pt == end) && (rbsq->consider.dir == dir)) { + *need_redraw_out = 0; return 0; /* do not redraw if there's no change */ + } rbsq->consider.pt = end; rbsq->consider.dir = dir; + *need_redraw_out = 1; return rbsr_seq_redraw(rbsq); } Index: src_plugins/rbs_routing/seq.h =================================================================== --- src_plugins/rbs_routing/seq.h (revision 38825) +++ src_plugins/rbs_routing/seq.h (revision 38826) @@ -32,6 +32,6 @@ int rbsr_seq_begin_at(rbsr_seq_t *rbss, pcb_board_t *pcb, rnd_layer_id_t lid, rnd_coord_t tx, rnd_coord_t ty, rnd_coord_t copper, rnd_coord_t clearance); void rbsr_seq_end(rbsr_seq_t *rbss); -int rbsr_seq_consider(rbsr_seq_t *rbss, rnd_coord_t tx, rnd_coord_t ty); +int rbsr_seq_consider(rbsr_seq_t *rbss, rnd_coord_t tx, rnd_coord_t ty, int *need_redraw_out); int rbsr_seq_accept(rbsr_seq_t *rbss); Index: src_plugins/rbs_routing/tool_seq.c =================================================================== --- src_plugins/rbs_routing/tool_seq.c (revision 38825) +++ src_plugins/rbs_routing/tool_seq.c (revision 38826) @@ -89,10 +89,14 @@ void pcb_tool_seq_adjust_attached_objects(rnd_design_t *hl) { + int rdrw; + if (pcb_crosshair.AttachedLine.State != PCB_CH_STATE_SECOND) return; - rbsr_seq_consider(&seq, pcb_crosshair.X, pcb_crosshair.Y); + rbsr_seq_consider(&seq, pcb_crosshair.X, pcb_crosshair.Y, &rdrw); + if (rdrw) + rnd_gui->invalidate_all(rnd_gui); } void pcb_tool_seq_draw_attached(rnd_design_t *hl)