Index: trunk/src/event.h =================================================================== --- trunk/src/event.h (revision 15533) +++ trunk/src/event.h (revision 15534) @@ -49,7 +49,7 @@ PCB_EVENT_BUSY, /* called before CPU-intensive task begins */ PCB_EVENT_RUBBER_RESET, /* rubber band: reset attached */ - PCB_EVENT_RUBBER_REMOVE_ELEMENT, /* rubber band: removed an element with rubber bands attached */ + PCB_EVENT_RUBBER_REMOVE_SUBC, /* rubber band: removed a subc with rubber bands attached */ PCB_EVENT_RUBBER_MOVE, /* rubber band: object moved */ PCB_EVENT_RUBBER_MOVE_DRAW, /* rubber band: draw crosshair-attached rubber band objects after a move or copy */ PCB_EVENT_RUBBER_ROTATE90, /* rubber band: crosshair object rotated by 90 degrees */ Index: trunk/src/tool_remove.c =================================================================== --- trunk/src/tool_remove.c (revision 15533) +++ trunk/src/tool_remove.c (revision 15534) @@ -57,15 +57,14 @@ return; } - if ((type == PCB_TYPE_SUBC) && (PCB->is_footprint)) { - pcb_message(PCB_MSG_WARNING, "Can not remove the subcircuit being edited in the footprint edit mode\n"); - return; + if (type == PCB_TYPE_SUBC) { + if(PCB->is_footprint) { + pcb_message(PCB_MSG_WARNING, "Can not remove the subcircuit being edited in the footprint edit mode\n"); + return; + } + pcb_event(PCB_EVENT_RUBBER_REMOVE_SUBC, "ppp", ptr1, ptr2, ptr3); } -#warning subc TODO: rewrite this to subc when elements are removed - if (type == PCB_TYPE_ELEMENT) - pcb_event(PCB_EVENT_RUBBER_REMOVE_ELEMENT, "ppp", ptr1, ptr2, ptr3); - /* preserve original parent over the board layer pcb_search_screen operated on - this is essential for undo: it needs to put back the object to the original layer (e.g. inside a subc) instead of on the board layer */ Index: trunk/src_plugins/rubberband_orig/rubberband.c =================================================================== --- trunk/src_plugins/rubberband_orig/rubberband.c (revision 15533) +++ trunk/src_plugins/rubberband_orig/rubberband.c (revision 15534) @@ -1168,14 +1168,12 @@ rbnd->RubberbandArcN = 0; } -#warning TODO: rewrite this for subc -#if 0 -static void rbe_remove_element(void *user_data, int argc, pcb_event_arg_t argv[]) +static void rbe_remove_subc(void *user_data, int argc, pcb_event_arg_t argv[]) { rubber_ctx_t *rbnd = user_data; pcb_rubberband_t *ptr; void *ptr1 = argv[1].d.p, *ptr2 = argv[2].d.p, *ptr3 = argv[3].d.p; - int i, type = PCB_TYPE_ELEMENT; + int i, type = PCB_TYPE_SUBC; rbnd->RubberbandN = 0; pcb_rubber_band_lookup_rat_lines(rbnd, type, ptr1, ptr2, ptr3); @@ -1188,7 +1186,6 @@ ptr++; } } -#endif static void rbe_move(void *user_data, int argc, pcb_event_arg_t argv[]) { @@ -1564,8 +1561,7 @@ { void *ctx = &rubber_band_state; pcb_event_bind(PCB_EVENT_RUBBER_RESET, rbe_reset, ctx, rubber_cookie); -#warning TODO -/* pcb_event_bind(PCB_EVENT_RUBBER_REMOVE_ELEMENT, rbe_remove_element, ctx, rubber_cookie);*/ + pcb_event_bind(PCB_EVENT_RUBBER_REMOVE_SUBC, rbe_remove_subc, ctx, rubber_cookie); pcb_event_bind(PCB_EVENT_RUBBER_MOVE, rbe_move, ctx, rubber_cookie); 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);