Index: trunk/src/Makefile.dep =================================================================== --- trunk/src/Makefile.dep (revision 6723) +++ trunk/src/Makefile.dep (revision 6724) @@ -1230,7 +1230,7 @@ ../src_plugins/lib_gtk_common/bu_status_line.h \ ../src_plugins/lib_gtk_common/in_mouse.h \ ../src_plugins/lib_gtk_common/in_keyboard.h \ - ../src_plugins/lib_gtk_common/../hid_gtk/gui.h + ../src_plugins/lib_gtk_common/ui_zoompan.h ../src_plugins/hid_gtk/gui-top-window.o: \ ../src_plugins/hid_gtk/gui-top-window.c ../config.h conf_core.h conf.h \ global_typedefs.h pcb_bool.h unit.h pcb-printf.h \ @@ -1274,6 +1274,8 @@ ../src_plugins/lib_gtk_common/wt_route_style.h \ ../src_plugins/lib_gtk_common/util_str.h \ ../src_plugins/lib_gtk_common/in_mouse.h \ + ../src_plugins/lib_gtk_common/in_keyboard.h \ + ../src_plugins/lib_gtk_common/ui_zoompan.h \ ../src_plugins/lib_gtk_common/win_place.h ../src_plugins/hid_lesstif/dialogs.o: \ ../src_plugins/hid_lesstif/dialogs.c \ @@ -2331,36 +2333,12 @@ ../src_plugins/lib_gtk_common/dlg_search_tab.h ../src_plugins/lib_gtk_common/in_keyboard.o: \ ../src_plugins/lib_gtk_common/in_keyboard.c ../config.h \ - ../src_plugins/lib_gtk_common/in_keyboard.h \ - ../src_plugins/lib_gtk_common/../hid_gtk/gui.h board.h const.h macro.h \ - global_typedefs.h pcb_bool.h unit.h vtroutestyle.h attrib.h \ - ../src_3rd/genvector/genvector_impl.h \ - ../src_3rd/genvector/genvector_undef.h layer.h globalconst.h \ - obj_all_list.h obj_arc_list.h obj_common.h \ - ../src_3rd/liblihata/genht/hash.h ../src_3rd/genlist/gendlist.h flag.h \ - obj_arc.h ../src_3rd/genlist/gentdlist_impl.h \ - ../src_3rd/genlist/gendlist.h ../src_3rd/genlist/gentdlist_undef.h \ - obj_elem_list.h obj_elem.h obj_line_list.h obj_line.h obj_pad_list.h \ - obj_pad.h obj_pinvia_list.h obj_pinvia.h obj_text.h ht_element.h \ - ../src_3rd/liblihata/genht/ht.h ../src_3rd/liblihata/genht/ht_inlines.h \ - obj_poly_list.h obj_poly.h polyarea.h obj_text_list.h obj_rat_list.h \ - obj_rat.h layer_grp.h library.h rats_patch.h board.h font.h box.h \ - math_helper.h move.h misc_util.h hid.h error.h drc.h hid_cfg.h \ + ../src_plugins/lib_gtk_common/in_keyboard.h hid_cfg_input.h \ ../src_3rd/liblihata/dom.h ../src_3rd/liblihata/lihata.h \ ../src_3rd/liblihata/parser.h ../src_3rd/liblihata/genht/htsp.h \ - ../src_3rd/liblihata/genht/ht.h hid_cfg_input.h \ - ../src_3rd/liblihata/genht/htip.h hid_cfg.h data.h crosshair.h \ - vtonpoint.h hid.h buffer.h \ - ../src_plugins/lib_gtk_common/../hid_gtk/ghid-main-menu.h \ - ../src_plugins/lib_gtk_common/wt_layer_selector.h \ - ../src_plugins/lib_gtk_common/wt_route_style.h route_style.h conf_core.h \ - conf.h pcb-printf.h ../src_3rd/genvector/gds_char.h \ - ../src_3rd/liblihata/lihata.h ../src_3rd/genvector/vtp0.h list_conf.h \ - event.h compat_misc.h ../src_plugins/lib_gtk_common/../hid_gtk/colors.h \ - ../src_plugins/lib_gtk_common/../hid_gtk/hid_gtk_conf.h conf.h \ - ../src_plugins/lib_gtk_common/bu_cursor_pos.h \ - ../src_plugins/lib_gtk_common/ui_zoompan.h unit.h pcb_bool.h \ - ../src_plugins/lib_gtk_common/dlg_propedit.h + ../src_3rd/liblihata/genht/ht.h ../src_3rd/liblihata/genht/ht_inlines.h \ + ../src_3rd/liblihata/genht/htip.h hid_cfg.h \ + ../src_plugins/lib_gtk_common/ui_zoompan.h unit.h pcb_bool.h ../src_plugins/lib_gtk_common/in_mouse.o: \ ../src_plugins/lib_gtk_common/in_mouse.c \ ../src_plugins/lib_gtk_common/in_mouse.h hid_cfg_input.h \ @@ -2369,9 +2347,11 @@ ../src_3rd/liblihata/genht/ht.h ../src_3rd/liblihata/genht/ht_inlines.h \ ../src_3rd/liblihata/genht/htip.h hid_cfg.h \ ../src_plugins/lib_gtk_common/in_keyboard.h \ - ../src_plugins/lib_gtk_common/../hid_gtk/gui.h ../config.h board.h \ - const.h macro.h global_typedefs.h pcb_bool.h unit.h vtroutestyle.h \ - attrib.h ../src_3rd/genvector/genvector_impl.h \ + ../src_plugins/lib_gtk_common/ui_zoompan.h unit.h ../config.h pcb_bool.h \ + ../src_plugins/lib_gtk_common/bu_status_line.h \ + ../src_plugins/lib_gtk_common/../hid_gtk/gui.h board.h const.h macro.h \ + global_typedefs.h pcb_bool.h unit.h vtroutestyle.h attrib.h \ + ../src_3rd/genvector/genvector_impl.h \ ../src_3rd/genvector/genvector_undef.h layer.h globalconst.h \ obj_all_list.h obj_arc_list.h obj_common.h \ ../src_3rd/liblihata/genht/hash.h ../src_3rd/genlist/gendlist.h flag.h \ @@ -2391,9 +2371,8 @@ event.h compat_misc.h ../src_plugins/lib_gtk_common/../hid_gtk/colors.h \ ../src_plugins/lib_gtk_common/../hid_gtk/hid_gtk_conf.h conf.h \ ../src_plugins/lib_gtk_common/bu_cursor_pos.h \ - ../src_plugins/lib_gtk_common/ui_zoompan.h unit.h pcb_bool.h \ - ../src_plugins/lib_gtk_common/dlg_propedit.h \ - ../src_plugins/lib_gtk_common/bu_status_line.h + ../src_plugins/lib_gtk_common/ui_zoompan.h \ + ../src_plugins/lib_gtk_common/dlg_propedit.h ../src_plugins/lib_gtk_common/lib_gtk_common.o: \ ../src_plugins/lib_gtk_common/lib_gtk_common.c plugins.h ../src_plugins/lib_gtk_common/menu_lht.o: \ Index: trunk/src_plugins/hid_gtk/gui-top-window.c =================================================================== --- trunk/src_plugins/hid_gtk/gui-top-window.c (revision 6723) +++ trunk/src_plugins/hid_gtk/gui-top-window.c (revision 6724) @@ -98,6 +98,7 @@ #include "../src_plugins/lib_gtk_common/dlg_route_style.h" #include "../src_plugins/lib_gtk_common/util_str.h" #include "../src_plugins/lib_gtk_common/in_mouse.h" +#include "../src_plugins/lib_gtk_common/in_keyboard.h" #include "../src_plugins/lib_gtk_common/wt_layer_selector.h" #include "../src_plugins/lib_gtk_common/win_place.h" @@ -1165,7 +1166,7 @@ g_signal_connect(G_OBJECT(gport->drawing_area), "button_release_event", G_CALLBACK(ghid_port_button_release_cb), NULL); key_press_handler = - g_signal_connect(G_OBJECT(gport->drawing_area), "key_press_event", G_CALLBACK(ghid_port_key_press_cb), NULL); + g_signal_connect(G_OBJECT(gport->drawing_area), "key_press_event", G_CALLBACK(ghid_port_key_press_cb), &ghid_port.view); key_release_handler = g_signal_connect(G_OBJECT(gport->drawing_area), "key_release_event", G_CALLBACK(ghid_port_key_release_cb), NULL); Index: trunk/src_plugins/hid_gtk/gui.h =================================================================== --- trunk/src_plugins/hid_gtk/gui.h (revision 6723) +++ trunk/src_plugins/hid_gtk/gui.h (revision 6724) @@ -141,17 +141,6 @@ extern GHidPort ghid_port, *gport; typedef enum { - NONE_PRESSED = 0, - SHIFT_PRESSED = PCB_M_Shift, - CONTROL_PRESSED = PCB_M_Ctrl, - MOD1_PRESSED = PCB_M_Mod1, - SHIFT_CONTROL_PRESSED = PCB_M_Shift | PCB_M_Ctrl, - SHIFT_MOD1_PRESSED = PCB_M_Shift | PCB_M_Mod1, - CONTROL_MOD1_PRESSED = PCB_M_Ctrl | PCB_M_Mod1, - SHIFT_CONTROL_MOD1_PRESSED = PCB_M_Shift | PCB_M_Ctrl | PCB_M_Mod1 -} ModifierKeysState; - -typedef enum { NO_BUTTON_PRESSED, BUTTON1_PRESSED, BUTTON2_PRESSED, @@ -202,8 +191,6 @@ void ghid_port_ranges_changed(void); void ghid_port_ranges_scale(void); -void ghid_note_event_location(GdkEventButton * ev); -gboolean ghid_port_key_press_cb(GtkWidget * drawing_area, GdkEventKey * kev, gpointer data); gboolean ghid_port_key_release_cb(GtkWidget * drawing_area, GdkEventKey * kev, gpointer data); Index: trunk/src_plugins/lib_gtk_common/in_keyboard.c =================================================================== --- trunk/src_plugins/lib_gtk_common/in_keyboard.c (revision 6723) +++ trunk/src_plugins/lib_gtk_common/in_keyboard.c (revision 6724) @@ -27,9 +27,10 @@ /* This code was originally written by Bill Wilson for the PCB Gtk port. */ #include "config.h" - #include "in_keyboard.h" #include +#include +#include gboolean ghid_is_modifier_key_sym(gint ksym) { @@ -38,15 +39,14 @@ return FALSE; } -ModifierKeysState ghid_modifier_keys_state(GdkModifierType * state) +ModifierKeysState ghid_modifier_keys_state(GtkWidget *drawing_area, GdkModifierType *state) { GdkModifierType mask; ModifierKeysState mk; gboolean shift, control, mod1; - GHidPort *out = &ghid_port; if (!state) - gdk_window_get_pointer(gtk_widget_get_window(out->drawing_area), NULL, NULL, &mask); + gdk_window_get_pointer(gtk_widget_get_window(drawing_area), NULL, NULL, &mask); else mask = *state; @@ -76,6 +76,8 @@ gboolean ghid_port_key_press_cb(GtkWidget *drawing_area, GdkEventKey *kev, gpointer data) { + pcb_gtk_view_t *view = data; + if (ghid_is_modifier_key_sym(kev->keyval)) return FALSE; @@ -106,7 +108,7 @@ if (kv == GDK_KEY_ISO_Left_Tab) kv = GDK_KEY_Tab; slen = pcb_hid_cfg_keys_input(&ghid_keymap, mods, kv, seq, &seq_len); if (slen > 0) { - ghid_port.view.has_entered = 1; + view->has_entered = 1; pcb_hid_cfg_keys_action(seq, slen); return TRUE; } Index: trunk/src_plugins/lib_gtk_common/in_keyboard.h =================================================================== --- trunk/src_plugins/lib_gtk_common/in_keyboard.h (revision 6723) +++ trunk/src_plugins/lib_gtk_common/in_keyboard.h (revision 6724) @@ -1,14 +1,37 @@ +#ifndef PCB_GTK_IN_KEYBOARD_H +#define PCB_GTK_IN_KEYBOARD_H + #include +#include -/*FIXME :( Needed for ModifierKeysState */ -#include "../hid_gtk/gui.h" +#include "hid_cfg_input.h" +#include "ui_zoompan.h" +typedef enum { + NONE_PRESSED = 0, + SHIFT_PRESSED = PCB_M_Shift, + CONTROL_PRESSED = PCB_M_Ctrl, + MOD1_PRESSED = PCB_M_Mod1, + SHIFT_CONTROL_PRESSED = PCB_M_Shift | PCB_M_Ctrl, + SHIFT_MOD1_PRESSED = PCB_M_Shift | PCB_M_Mod1, + CONTROL_MOD1_PRESSED = PCB_M_Ctrl | PCB_M_Mod1, + SHIFT_CONTROL_MOD1_PRESSED = PCB_M_Shift | PCB_M_Ctrl | PCB_M_Mod1 +} ModifierKeysState; + /** */ gboolean ghid_is_modifier_key_sym(gint ksym); /** Returns key modifier state */ -ModifierKeysState ghid_modifier_keys_state(GdkModifierType * state); +ModifierKeysState ghid_modifier_keys_state(GtkWidget *drawing_area, GdkModifierType *state); /** Handle user keys in the output drawing area. */ gboolean ghid_port_key_press_cb(GtkWidget *drawing_area, GdkEventKey *kev, gpointer data); +/* Temporary call back to hid_gtk: */ +extern void ghid_note_event_location(GdkEventButton *ev); + +/* Temporary variable from hid_gtk: move the whole keymap thing here */ +extern pcb_hid_cfg_keys_t ghid_keymap; + + +#endif Index: trunk/src_plugins/lib_gtk_common/in_mouse.c =================================================================== --- trunk/src_plugins/lib_gtk_common/in_mouse.c (revision 6723) +++ trunk/src_plugins/lib_gtk_common/in_mouse.c (revision 6724) @@ -36,6 +36,9 @@ #include "bu_status_line.h" +#warning TODO: remove this +#include "../hid_gtk/gui.h" + pcb_hid_cfg_mouse_t ghid_mouse; int ghid_wheel_zoom = 0; @@ -56,10 +59,9 @@ #define ICON_Y_HOT 8 -static GdkCursorType gport_set_cursor(GdkCursorType shape) +static GdkCursorType gport_set_cursor(GdkCursorType shape, GdkCursorType old_shape) { GdkWindow *window; - GdkCursorType old_shape = gport->X_cursor_shape; GdkColor fg = { 0, 65535, 65535, 65535 }; /* white */ GdkColor bg = { 0, 0, 0, 0 }; /* black */ @@ -95,12 +97,12 @@ void ghid_point_cursor(void) { - old_cursor = gport_set_cursor(GDK_DRAPED_BOX); + old_cursor = gport_set_cursor(GDK_DRAPED_BOX, gport->X_cursor_shape); } void ghid_hand_cursor(void) { - old_cursor = gport_set_cursor(GDK_HAND2); + old_cursor = gport_set_cursor(GDK_HAND2, gport->X_cursor_shape); } void ghid_watch_cursor(void) @@ -107,7 +109,7 @@ { GdkCursorType tmp; - tmp = gport_set_cursor(GDK_WATCH); + tmp = gport_set_cursor(GDK_WATCH, gport->X_cursor_shape); if (tmp != GDK_WATCH) old_cursor = tmp; } @@ -116,68 +118,68 @@ { switch (mode) { case PCB_MODE_NO: - gport_set_cursor((GdkCursorType) CUSTOM_CURSOR_DRAG); + gport_set_cursor((GdkCursorType) CUSTOM_CURSOR_DRAG, gport->X_cursor_shape); break; case PCB_MODE_VIA: - gport_set_cursor(GDK_ARROW); + gport_set_cursor(GDK_ARROW, gport->X_cursor_shape); break; case PCB_MODE_LINE: - gport_set_cursor(GDK_PENCIL); + gport_set_cursor(GDK_PENCIL, gport->X_cursor_shape); break; case PCB_MODE_ARC: - gport_set_cursor(GDK_QUESTION_ARROW); + gport_set_cursor(GDK_QUESTION_ARROW, gport->X_cursor_shape); break; case PCB_MODE_ARROW: - gport_set_cursor(GDK_LEFT_PTR); + gport_set_cursor(GDK_LEFT_PTR, gport->X_cursor_shape); break; case PCB_MODE_POLYGON: case PCB_MODE_POLYGON_HOLE: - gport_set_cursor(GDK_SB_UP_ARROW); + gport_set_cursor(GDK_SB_UP_ARROW, gport->X_cursor_shape); break; case PCB_MODE_PASTE_BUFFER: - gport_set_cursor(GDK_HAND1); + gport_set_cursor(GDK_HAND1, gport->X_cursor_shape); break; case PCB_MODE_TEXT: - gport_set_cursor(GDK_XTERM); + gport_set_cursor(GDK_XTERM, gport->X_cursor_shape); break; case PCB_MODE_RECTANGLE: - gport_set_cursor(GDK_UL_ANGLE); + gport_set_cursor(GDK_UL_ANGLE, gport->X_cursor_shape); break; case PCB_MODE_THERMAL: - gport_set_cursor(GDK_IRON_CROSS); + gport_set_cursor(GDK_IRON_CROSS, gport->X_cursor_shape); break; case PCB_MODE_REMOVE: - gport_set_cursor(GDK_PIRATE); + gport_set_cursor(GDK_PIRATE, gport->X_cursor_shape); break; case PCB_MODE_ROTATE: if (ghid_shift_is_pressed()) - gport_set_cursor((GdkCursorType) CUSTOM_CURSOR_CLOCKWISE); + gport_set_cursor((GdkCursorType) CUSTOM_CURSOR_CLOCKWISE, gport->X_cursor_shape); else - gport_set_cursor(GDK_EXCHANGE); + gport_set_cursor(GDK_EXCHANGE, gport->X_cursor_shape); break; case PCB_MODE_COPY: case PCB_MODE_MOVE: - gport_set_cursor(GDK_CROSSHAIR); + gport_set_cursor(GDK_CROSSHAIR, gport->X_cursor_shape); break; case PCB_MODE_INSERT_POINT: - gport_set_cursor(GDK_DOTBOX); + gport_set_cursor(GDK_DOTBOX, gport->X_cursor_shape); break; case PCB_MODE_LOCK: - gport_set_cursor((GdkCursorType) CUSTOM_CURSOR_LOCK); + gport_set_cursor((GdkCursorType) CUSTOM_CURSOR_LOCK, gport->X_cursor_shape); } } @@ -190,12 +192,12 @@ else shape = (pcb_crosshair.X >= pcb_crosshair.AttachedBox.Point1.X) ? GDK_LR_ANGLE : GDK_LL_ANGLE; if (gport->X_cursor_shape != shape) - gport_set_cursor(shape); + gport_set_cursor(shape, gport->X_cursor_shape); } void ghid_restore_cursor(void) { - gport_set_cursor(old_cursor); + gport_set_cursor(old_cursor, gport->X_cursor_shape); } /* =============================================================== */ @@ -319,7 +321,7 @@ int button; state = (GdkModifierType) (ev->state); - mk = ghid_modifier_keys_state(&state); + mk = ghid_modifier_keys_state(widget, &state); /* X11 gtk hard codes buttons 4, 5, 6, 7 as below in * gtk+/gdk/x11/gdkevents-x11.c:1121, but quartz and windows have @@ -353,7 +355,7 @@ ghid_note_event_location(ev); state = (GdkModifierType) (ev->state); - mk = ghid_modifier_keys_state(&state); + mk = ghid_modifier_keys_state(drawing_area, &state); extern GdkModifierType ghid_glob_mask; ghid_glob_mask = state; @@ -378,7 +380,7 @@ ghid_note_event_location(ev); state = (GdkModifierType) (ev->state); - mk = ghid_modifier_keys_state(&state); + mk = ghid_modifier_keys_state(drawing_area, &state); hid_cfg_mouse_action(&ghid_mouse, ghid_mouse_button(ev->button) | mk | PCB_M_Release);