Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 25210) +++ trunk/src/hid.h (revision 25211) @@ -559,7 +559,8 @@ /* Change the mouse cursor to a named cursor e.g. after the tool has changed. The list of cursors names available may depend on the HID. */ - void (*set_mouse_cursor)(pcb_hidlib_t *hidlib, const char *name); + void (*reg_mouse_cursor)(pcb_hidlib_t *hidlib, int idx, const char *name, const unsigned char *pixel, const unsigned char *mask); + void (*set_mouse_cursor)(pcb_hidlib_t *hidlib, int idx); }; /* One of these functions (in the common code) will be called whenever the GUI Index: trunk/src/hid_nogui.c =================================================================== --- trunk/src/hid_nogui.c (revision 25210) +++ trunk/src/hid_nogui.c (revision 25211) @@ -463,8 +463,11 @@ free(data); } +static void nogui_reg_mouse_cursor(pcb_hidlib_t *hidlib, int idx, const char *name, const unsigned char *pixel, const unsigned char *mask) +{ +} -static void nogui_set_mouse_cursor(pcb_hidlib_t *hidlib, const char *name) +static void nogui_set_mouse_cursor(pcb_hidlib_t *hidlib, int idx) { } @@ -514,6 +517,7 @@ hid->clip_get = nogui_clip_get; hid->clip_free = nogui_clip_free; hid->set_mouse_cursor = nogui_set_mouse_cursor; + hid->reg_mouse_cursor = nogui_reg_mouse_cursor; } Index: trunk/src/tool.c =================================================================== --- trunk/src/tool.c (revision 25210) +++ trunk/src/tool.c (revision 25211) @@ -70,10 +70,14 @@ int pcb_tool_reg(pcb_tool_t *tool, const char *cookie) { + pcb_toolid_t id; if (pcb_tool_lookup(tool->name) != PCB_TOOLID_INVALID) /* don't register two tools with the same name */ return -1; tool->cookie = cookie; + id = pcb_tools.used; vtp0_append(&pcb_tools, (void *)tool); + if (pcb_gui != NULL) + pcb_gui->reg_mouse_cursor(NULL, id, tool->cursor.name, tool->cursor.pixel, tool->cursor.mask); return 0; } @@ -145,7 +149,7 @@ pcb_crosshair_move_relative(0, 0); pcb_notify_crosshair_change(pcb_true); if (pcb_gui != NULL) - pcb_gui->set_mouse_cursor(hidlib, "TODO"); + pcb_gui->set_mouse_cursor(hidlib, id); return 0; } Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 25210) +++ trunk/src_plugins/hid_lesstif/main.c (revision 25211) @@ -3252,11 +3252,16 @@ cmd_is_active = 1; } -static void ltf_set_mouse_cursor(pcb_hidlib_t *hidlib, const char *name) +static void ltf_reg_mouse_cursor(pcb_hidlib_t *hidlib, int idx, const char *name, const unsigned char *pixel, const unsigned char *mask) { } +static void ltf_set_mouse_cursor(pcb_hidlib_t *hidlib, int idx) +{ + +} + void lesstif_create_menu(const char *menu, const pcb_menu_prop_t *props); int lesstif_remove_menu(const char *menu); int lesstif_remove_menu_node(lht_node_t *node); @@ -3365,6 +3370,7 @@ lesstif_hid.view_get = ltf_view_get; lesstif_hid.open_command = ltf_open_command; lesstif_hid.open_popup = ltf_open_popup; + lesstif_hid.reg_mouse_cursor = ltf_reg_mouse_cursor; lesstif_hid.set_mouse_cursor = ltf_set_mouse_cursor; lesstif_hid.set_hidlib = ltf_set_hidlib; Index: trunk/src_plugins/lib_gtk_hid/glue_hid.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 25210) +++ trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 25211) @@ -547,11 +547,16 @@ ghid_sync_with_new_layout(&ghidgui->topwin); } -static void ghid_set_mouse_cursor(pcb_hidlib_t *hidlib, const char *name) +static void ghid_reg_mouse_cursor(pcb_hidlib_t *hidlib, int idx, const char *name, const unsigned char *pixel, const unsigned char *mask) { } +static void ghid_set_mouse_cursor(pcb_hidlib_t *hidlib, int idx) +{ + +} + void ghid_glue_hid_init(pcb_hid_t *dst) { memset(dst, 0, sizeof(pcb_hid_t)); @@ -622,6 +627,7 @@ dst->view_get = ghid_view_get; dst->open_command = ghid_open_command; dst->open_popup = ghid_open_popup; + dst->reg_mouse_cursor = ghid_reg_mouse_cursor; dst->set_mouse_cursor = ghid_set_mouse_cursor; dst->set_hidlib = ghid_set_hidlib;