Index: crosshair.c =================================================================== --- crosshair.c (revision 25708) +++ crosshair.c (revision 25709) @@ -1,5 +1,10 @@ #include +#include "event.h" +#include "crosshair.h" +#include "hidlib_conf.h" +#include "grid.h" + #include "main.h" void pcb_hidlib_adjust_attached_objects(void) @@ -18,6 +23,16 @@ void pcb_hidlib_crosshair_move_to(pcb_coord_t abs_x, pcb_coord_t abs_y, int mouse_mot) { + /* grid fit */ + abs_x = pcb_grid_fit(abs_x, hle_design.hidlib.grid, hle_design.hidlib.grid_ox); + abs_y = pcb_grid_fit(abs_y, hle_design.hidlib.grid, hle_design.hidlib.grid_ox); + hle_design.crosshair_x = abs_x; + hle_design.crosshair_y = abs_y; + + /* update the GUI */ + pcb_gui->notify_crosshair_change(&hle_design.hidlib, pcb_false); + pcb_gui->set_crosshair(abs_x, abs_y, 0); + pcb_gui->notify_crosshair_change(&hle_design.hidlib, pcb_true); } void pcbhl_draw_marks(pcb_hidlib_t *hidlib, pcb_bool inhibit_drawing_mode) Index: main.h =================================================================== --- main.h (revision 25708) +++ main.h (revision 25709) @@ -11,6 +11,10 @@ } hle_line_t; typedef struct { + /* UI states */ + pcb_coord_t crosshair_x, crosshair_y; + + /* data */ pcb_hidlib_t hidlib; hle_rtree_t lines; } hle_design_t;