Index: trunk/doc/conf/tree/editor.html =================================================================== --- trunk/doc/conf/tree/editor.html (revision 25333) +++ trunk/doc/conf/tree/editor.html (revision 25334) @@ -59,4 +59,5 @@ draw_grid boolean 0 [hidlib] draw grid points auto_place boolean 0 [hidlib] force placement of GUI windows (dialogs), trying to override the window manager fullscreen boolean 0 [hidlib] hide widgets to make more room for the drawing + crosshair_shape_idx integer 0 [hidlib] crosshair shape as defined in pcb_crosshair_shape_e Index: trunk/src/crosshair.c =================================================================== --- trunk/src/crosshair.c (revision 25333) +++ trunk/src/crosshair.c (revision 25334) @@ -1058,9 +1058,6 @@ pcb_hid_set_line_cap(pcb_crosshair.GC, pcb_cap_round); pcb_hid_set_line_width(pcb_crosshair.GC, 1); - /* set initial shape */ - pcb_crosshair.shape = pcb_ch_shape_basic; - /* set default limits */ pcb_crosshair.MinX = pcb_crosshair.MinY = 0; pcb_crosshair.MaxX = PCB->hidlib.size_x; Index: trunk/src/crosshair.h =================================================================== --- trunk/src/crosshair.h (revision 25333) +++ trunk/src/crosshair.h (revision 25334) @@ -58,13 +58,6 @@ pcb_coord_t X, Y; } pcb_mark_t; -enum pcb_crosshair_shape_e { - pcb_ch_shape_basic = 0, /* 4-ray */ - pcb_ch_shape_union_jack, /* 8-ray */ - pcb_ch_shape_dozen, /* 12-ray */ - pcb_ch_shape_NUM -}; - typedef struct { /* holds crosshair, cursor and crosshair-attachment information */ pcb_hid_gc_t GC; /* GC for cursor drawing */ pcb_hid_gc_t AttachGC; /* and for displaying buffer contents */ @@ -77,7 +70,6 @@ int AttachedPolygon_pts; /* number of valid points ever seen for this poly */ pcb_attached_object_t AttachedObject; /* data of attached objects */ pcb_route_t Route; /* Calculated line route in LINE or MOVE(LINE) mode */ - enum pcb_crosshair_shape_e shape; /* shape of crosshair */ vtop_t onpoint_objs; vtop_t old_onpoint_objs; pcb_pstk_t *snapped_pstk; Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 25333) +++ trunk/src/gui_act.c (revision 25334) @@ -161,9 +161,9 @@ case F_CycleCrosshair: pcb_notify_crosshair_change(pcb_false); - pcb_crosshair.shape = CrosshairShapeIncrement(pcb_crosshair.shape); - if (pcb_ch_shape_NUM == pcb_crosshair.shape) - pcb_crosshair.shape = pcb_ch_shape_basic; + conf_setf(CFR_CLI, "editor/crosshair_shape_idx", 0, "%d", CrosshairShapeIncrement(pcbhl_conf.editor.crosshair_shape_idx)); + if (pcb_ch_shape_NUM == pcbhl_conf.editor.crosshair_shape_idx) + conf_set(CFR_CLI, "editor/crosshair_shape_idx", 0, "0", POL_OVERWRITE); pcb_notify_crosshair_change(pcb_true); break; Index: trunk/src/hidlib_conf.h =================================================================== --- trunk/src/hidlib_conf.h (revision 25333) +++ trunk/src/hidlib_conf.h (revision 25334) @@ -30,6 +30,13 @@ #include "conf.h" #include "color.h" +enum pcb_crosshair_shape_e { + pcb_ch_shape_basic = 0, /* 4-ray */ + pcb_ch_shape_union_jack = 1, /* 8-ray */ + pcb_ch_shape_dozen = 2, /* 12-ray */ + pcb_ch_shape_NUM +}; + /* to @conf_gen.sh: begin hidlib */ typedef struct { @@ -79,6 +86,7 @@ CFT_BOOLEAN draw_grid; /* draw grid points */ CFT_BOOLEAN auto_place; /* force placement of GUI windows (dialogs), trying to override the window manager */ CFT_BOOLEAN fullscreen; /* hide widgets to make more room for the drawing */ + CFT_INTEGER crosshair_shape_idx; /* crosshair shape as defined in pcb_crosshair_shape_e */ const struct { CFT_BOOLEAN flip_x; /* view: flip the board along the X (horizontal) axis */ Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 25333) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 25334) @@ -1306,7 +1306,7 @@ draw_slanted_cross(xor_gc, x, y); if (prev == pcb_ch_shape_dozen) draw_dozen_cross(xor_gc, x, y); - prev = pcb_crosshair.shape; + prev = pcbhl_conf.editor.crosshair_shape_idx; } static void show_crosshair(gboolean paint_new_location) Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 25333) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 25334) @@ -669,7 +669,7 @@ pcb_gl_draw_slanted_cross(hidlib, x, y, z); if (prev == pcb_ch_shape_dozen) pcb_gl_draw_dozen_cross(hidlib, x, y, z); - prev = pcb_crosshair.shape; + prev = pcbhl_conf.editor.crosshair_shape_idx; } static void ghid_gl_show_crosshair(pcb_hidlib_t *hidlib, gboolean paint_new_location) Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 25333) +++ trunk/src_plugins/hid_lesstif/main.c (revision 25334) @@ -1170,9 +1170,9 @@ static void draw_crosshair(GC xor_gc, int x, int y, int view_width, int view_height) { draw_right_cross(xor_gc, x, y, view_width, view_height); - if (pcb_crosshair.shape == pcb_ch_shape_union_jack) + if (pcbhl_conf.editor.crosshair_shape_idx == pcb_ch_shape_union_jack) draw_slanted_cross(xor_gc, x, y, view_width, view_height); - if (pcb_crosshair.shape == pcb_ch_shape_dozen) + if (pcbhl_conf.editor.crosshair_shape_idx == pcb_ch_shape_dozen) draw_dozen_cross(xor_gc, x, y, view_width, view_height); }