Index: trunk/src/crosshair.c =================================================================== --- trunk/src/crosshair.c (revision 17349) +++ trunk/src/crosshair.c (revision 17350) @@ -501,7 +501,7 @@ /* -------------------------------------------------------------------------- * draw the marker position */ -void pcb_draw_mark(void) +void pcb_draw_mark(pcb_bool inhibit_drawing_mode) { pcb_coord_t ms = conf_core.appearance.mark_size; @@ -509,13 +509,16 @@ if (!pcb_marked.status) return; - pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, 1, NULL); - pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, 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, 1, NULL); + } pcb_gui->draw_line(pcb_crosshair.GC, pcb_marked.X - ms, pcb_marked.Y - ms, pcb_marked.X + ms, pcb_marked.Y + ms); pcb_gui->draw_line(pcb_crosshair.GC, pcb_marked.X + ms, pcb_marked.Y - ms, pcb_marked.X - ms, pcb_marked.Y + ms); - 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 17349) +++ trunk/src/crosshair.h (revision 17350) @@ -101,7 +101,7 @@ void pcb_notify_crosshair_change(pcb_bool changes_complete); void pcb_notify_mark_change(pcb_bool changes_complete); void pcb_draw_attached(pcb_bool inhibit_drawing_mode); -void pcb_draw_mark(void); +void pcb_draw_mark(pcb_bool inhibit_drawing_mode); void pcb_crosshair_move_relative(pcb_coord_t, pcb_coord_t); pcb_bool pcb_crosshair_move_absolute(pcb_coord_t, pcb_coord_t); void pcb_crosshair_set_range(pcb_coord_t, pcb_coord_t, 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 17349) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 17350) @@ -1164,7 +1164,7 @@ /* In some cases we are called with the mark still off */ if (priv->mark_invalidate_depth == 0) - pcb_draw_mark(); + pcb_draw_mark(0); draw_lead_user(priv); @@ -1266,7 +1266,7 @@ } if (priv->mark_invalidate_depth == 0) - pcb_draw_mark(); + pcb_draw_mark(0); if (!changes_complete) { priv->mark_invalidate_depth++; Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 17349) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 17350) @@ -956,7 +956,7 @@ ghid_gl_invalidate_current_gc(); pcb_draw_attached(0); - pcb_draw_mark(); + pcb_draw_mark(0); drawgl_flush(); ghid_gl_show_crosshair(TRUE); Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 17349) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 17350) @@ -1156,7 +1156,7 @@ /* Draws "GUI" information on top of design */ priv->cr = priv->cr_drawing_area; pcb_draw_attached(0); - pcb_draw_mark(); + pcb_draw_mark(0); draw_lead_user(priv); @@ -1242,7 +1242,7 @@ } if (priv->mark_invalidate_depth == 0) - pcb_draw_mark(); + pcb_draw_mark(0); if (!changes_complete) { priv->mark_invalidate_depth++; Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 17349) +++ trunk/src_plugins/hid_lesstif/main.c (revision 17350) @@ -2435,7 +2435,7 @@ lesstif_drawing_mode = PCB_HID_COMP_POSITIVE; draw_grid(); if (crosshair_on) - pcb_draw_mark(); + pcb_draw_mark(0); show_crosshair(0); /* To keep the drawn / not drawn info correct */ XSetFunction(display, my_gc, GXcopy); XCopyArea(display, main_pixmap, window, my_gc, 0, 0, view_width, view_height, 0, 0); @@ -2804,7 +2804,7 @@ if (invalidate_depth == 0 && crosshair_on) { save_pixmap = pixmap; pixmap = window; - pcb_draw_mark(); + pcb_draw_mark(1); pixmap = save_pixmap; }