Index: trunk/src/crosshair.c =================================================================== --- trunk/src/crosshair.c (revision 17345) +++ trunk/src/crosshair.c (revision 17346) @@ -473,10 +473,12 @@ /* --------------------------------------------------------------------------- * draws additional stuff that follows the crosshair */ -void pcb_draw_attached(void) +void pcb_draw_attached(pcb_bool inhibit_drawing_mode) { - pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, 1, NULL); - pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE_XOR, 1, NULL); + if (!inhibit_drawing_mode) { + pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, 1, NULL); + pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE_XOR, 1, NULL); + } pcb_tool_draw_attached(); @@ -491,7 +493,8 @@ pcb_gui->draw_rect(pcb_crosshair.GC, x1, y1, x2, y2); } - pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, 1, NULL); + if (!inhibit_drawing_mode) + pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, 1, NULL); } Index: trunk/src/crosshair.h =================================================================== --- trunk/src/crosshair.h (revision 17345) +++ trunk/src/crosshair.h (revision 17346) @@ -100,7 +100,7 @@ void pcb_notify_crosshair_change(pcb_bool changes_complete); void pcb_notify_mark_change(pcb_bool changes_complete); -void pcb_draw_attached(void); +void pcb_draw_attached(pcb_bool inhibit_drawing_mode); void pcb_draw_mark(void); void pcb_crosshair_move_relative(pcb_coord_t, pcb_coord_t); pcb_bool pcb_crosshair_move_absolute(pcb_coord_t, pcb_coord_t); Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 17345) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 17346) @@ -1160,7 +1160,7 @@ /* In some cases we are called with the crosshair still off */ if (priv->attached_invalidate_depth == 0) - pcb_draw_attached(); + pcb_draw_attached(0); /* In some cases we are called with the mark still off */ if (priv->mark_invalidate_depth == 0) @@ -1232,7 +1232,7 @@ } if (priv->attached_invalidate_depth == 0) - pcb_draw_attached(); + pcb_draw_attached(0); if (!changes_complete) { priv->attached_invalidate_depth++; Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 17345) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 17346) @@ -955,7 +955,7 @@ ghid_gl_invalidate_current_gc(); - pcb_draw_attached(); + pcb_draw_attached(0); pcb_draw_mark(); drawgl_flush(); Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 17345) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 17346) @@ -1155,7 +1155,7 @@ /* Draws "GUI" information on top of design */ priv->cr = priv->cr_drawing_area; - pcb_draw_attached(); + pcb_draw_attached(0); pcb_draw_mark(); draw_lead_user(priv); Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 17345) +++ trunk/src_plugins/hid_lesstif/main.c (revision 17346) @@ -2433,7 +2433,7 @@ lesstif_drawing_mode = PCB_HID_COMP_POSITIVE; draw_grid(); if (crosshair_on) { - pcb_draw_attached(); + pcb_draw_attached(0); pcb_draw_mark(); } show_crosshair(0); /* To keep the drawn / not drawn info correct */ @@ -2772,7 +2772,7 @@ if (invalidate_depth == 0 && crosshair_on) { save_pixmap = pixmap; pixmap = window; - pcb_draw_attached(); + pcb_draw_attached(1); pixmap = save_pixmap; }