Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 5247) +++ trunk/src/action_helper.c (revision 5248) @@ -136,14 +136,12 @@ /* get all attached objects if necessary */ if ((conf_core.editor.mode != PCB_MODE_COPY) && conf_core.editor.rubber_band_mode) - pcb_rubber_band_lookup_lines(pcb_crosshair.AttachedObject.Type, - pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3); + pcb_event(PCB_EVENT_RUBBER_LOOKUP_LINES, "ippp", pcb_crosshair.AttachedObject.Type, pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3); if (conf_core.editor.mode != PCB_MODE_COPY && (pcb_crosshair.AttachedObject.Type == PCB_TYPE_ELEMENT || pcb_crosshair.AttachedObject.Type == PCB_TYPE_VIA || pcb_crosshair.AttachedObject.Type == PCB_TYPE_LINE || pcb_crosshair.AttachedObject.Type == PCB_TYPE_LINE_POINT)) - pcb_rubber_band_lookup_rat_lines(pcb_crosshair.AttachedObject.Type, - pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3); + pcb_event(PCB_EVENT_RUBBER_LOOKUP_RATS, "ippp", pcb_crosshair.AttachedObject.Type, pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3); } Index: trunk/src/event.h =================================================================== --- trunk/src/event.h (revision 5247) +++ trunk/src/event.h (revision 5248) @@ -39,6 +39,8 @@ PCB_EVENT_RUBBER_MOVE_DRAW, /* rubber band: draw crosshiar-attached rubber band objects after a move or copy */ PCB_EVENT_RUBBER_ROTATE90, /* rubber band: crosshair object rotated by 90 degrees */ PCB_EVENT_RUBBER_RENAME, /* rubber band: element pin/pad got renamed */ + PCB_EVENT_RUBBER_LOOKUP_LINES, /* rubber band: attach rubber banded line objects to crosshair */ + PCB_EVENT_RUBBER_LOOKUP_RATS, /* rubber band: attach rubber banded rat lines objects to crosshair */ PCB_EVENT_last /* not a real event */ } pcb_event_id_t; Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 5247) +++ trunk/src/object_act.c (revision 5248) @@ -389,9 +389,9 @@ ny -= y; pcb_event(PCB_EVENT_RUBBER_RESET, NULL); if (conf_core.editor.rubber_band_mode) - pcb_rubber_band_lookup_lines(type, ptr1, ptr2, ptr3); + pcb_event(PCB_EVENT_RUBBER_LOOKUP_LINES, "ippp", type, ptr1, ptr2, ptr3); if (type == PCB_TYPE_ELEMENT) - pcb_rubber_band_lookup_rat_lines(type, ptr1, ptr2, ptr3); + pcb_event(PCB_EVENT_RUBBER_LOOKUP_RATS, "ippp", type, ptr1, ptr2, ptr3); pcb_move_obj_and_rubberband(type, ptr1, ptr2, ptr3, nx, ny); pcb_board_set_changed_flag(pcb_true); return 0; Index: trunk/src/rotate.c =================================================================== --- trunk/src/rotate.c (revision 5247) +++ trunk/src/rotate.c (revision 5248) @@ -114,9 +114,9 @@ } pcb_event(PCB_EVENT_RUBBER_RESET, NULL); if (conf_core.editor.rubber_band_mode) - pcb_rubber_band_lookup_lines(type, ptr1, ptr2, ptr3); + pcb_event(PCB_EVENT_RUBBER_LOOKUP_LINES, "ippp", type, ptr1, ptr2, ptr3); if (type == PCB_TYPE_ELEMENT) - pcb_rubber_band_lookup_rat_lines(type, ptr1, ptr2, ptr3); + pcb_event(PCB_EVENT_RUBBER_LOOKUP_RATS, "ippp", type, ptr1, ptr2, ptr3); pcb_obj_rotate90(type, ptr1, ptr2, ptr3, X, Y, Steps); pcb_board_set_changed_flag(pcb_true); } Index: trunk/src/rubberband.c =================================================================== --- trunk/src/rubberband.c (revision 5247) +++ trunk/src/rubberband.c (revision 5248) @@ -41,6 +41,7 @@ #include "undo.h" #include "operation.h" #include "rotate.h" +#include "draw.h" #include "obj_rat_draw.h" #include "obj_line_op.h" #include "obj_line_draw.h" @@ -666,7 +667,7 @@ { int type = argv[1].d.i; void *ptr1 = argv[2].d.p, *ptr2 = argv[3].d.p, *ptr3 = argv[4].d.p; - int pinnum = argv[5].d.i; +/* int pinnum = argv[5].d.i;*/ if (type == PCB_TYPE_ELEMENT) { pcb_rubberband_t *ptr; @@ -686,6 +687,23 @@ } } +static void rbe_lookup_lines(void *user_data, int argc, pcb_event_arg_t argv[]) +{ + int type = argv[1].d.i; + void *ptr1 = argv[2].d.p, *ptr2 = argv[3].d.p, *ptr3 = argv[4].d.p; + + pcb_rubber_band_lookup_lines(type, ptr1, ptr2, ptr3); +} + +static void rbe_lookup_rats(void *user_data, int argc, pcb_event_arg_t argv[]) +{ + int type = argv[1].d.i; + void *ptr1 = argv[2].d.p, *ptr2 = argv[3].d.p, *ptr3 = argv[4].d.p; + + pcb_rubber_band_lookup_rat_lines(type, ptr1, ptr2, ptr3); +} + + static const char *rubber_cookie = "old rubberband"; void pcb_rubberband_init(void) @@ -697,4 +715,6 @@ pcb_event_bind(PCB_EVENT_RUBBER_MOVE_DRAW, rbe_draw, ctx, rubber_cookie); pcb_event_bind(PCB_EVENT_RUBBER_ROTATE90, rbe_rotate90, ctx, rubber_cookie); pcb_event_bind(PCB_EVENT_RUBBER_RENAME, rbe_rename, ctx, rubber_cookie); + pcb_event_bind(PCB_EVENT_RUBBER_LOOKUP_LINES, rbe_lookup_lines, ctx, rubber_cookie); + pcb_event_bind(PCB_EVENT_RUBBER_LOOKUP_RATS, rbe_lookup_rats, ctx, rubber_cookie); } Index: trunk/src/rubberband.h =================================================================== --- trunk/src/rubberband.h (revision 5247) +++ trunk/src/rubberband.h (revision 5248) @@ -40,12 +40,7 @@ pcb_point_t *MovedPoint; /* and finally the point */ } pcb_rubberband_t; - -void pcb_rubber_band_lookup_lines(int, void *, void *, void *); -void pcb_rubber_band_lookup_rat_lines(int, void *, void *, void *); - /* temporary call until rubber band is moved out into a plugin */ void pcb_rubberband_init(void); - #endif