Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 9196) +++ trunk/src/action_helper.c (revision 9197) @@ -1100,7 +1100,7 @@ pcb_element_t *e = 0; if (pcb_gui->shift_is_pressed()) { - int type = pcb_search_screen(Note.X, Note.Y, PCB_TYPE_ELEMENT, &ptr1, &ptr2, + int type = pcb_search_screen(Note.X, Note.Y, PCB_TYPE_ELEMENT | PCB_TYPE_SUBC, &ptr1, &ptr2, &ptr3); if (type == PCB_TYPE_ELEMENT) { e = (pcb_element_t *) ptr1; @@ -1117,7 +1117,7 @@ if (pcb_buffer_copy_to_layout(PCB, Note.X, Note.Y)) pcb_board_set_changed_flag(pcb_true); if (e) { - int type = pcb_search_screen(Note.X, Note.Y, PCB_TYPE_ELEMENT, &ptr1, &ptr2, + int type = pcb_search_screen(Note.X, Note.Y, PCB_TYPE_ELEMENT | PCB_TYPE_SUBC, &ptr1, &ptr2, &ptr3); if (type == PCB_TYPE_ELEMENT && ptr1) { int i, save_n; Index: trunk/src/change.h =================================================================== --- trunk/src/change.h (revision 9196) +++ trunk/src/change.h (revision 9197) @@ -35,7 +35,7 @@ * some defines */ #define PCB_CHANGENAME_TYPES \ - (PCB_TYPE_VIA | PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_LINE) + (PCB_TYPE_VIA | PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT | PCB_TYPE_SUBC | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_LINE) #define PCB_CHANGESIZE_TYPES \ (PCB_TYPE_POLYGON | PCB_TYPE_VIA | PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_LINE | \ @@ -42,7 +42,7 @@ PCB_TYPE_ARC | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_ELEMENT) #define PCB_CHANGE2NDSIZE_TYPES \ - (PCB_TYPE_VIA | PCB_TYPE_PIN | PCB_TYPE_ELEMENT) + (PCB_TYPE_VIA | PCB_TYPE_PIN | PCB_TYPE_ELEMENT | PCB_TYPE_SUBC) /* We include polygons here only to inform the user not to do it that way. */ #define PCB_CHANGECLEARSIZE_TYPES \ @@ -49,13 +49,13 @@ (PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_VIA | PCB_TYPE_LINE | PCB_TYPE_ARC | PCB_TYPE_POLYGON) #define PCB_CHANGENONETLIST_TYPES \ - (PCB_TYPE_ELEMENT) + (PCB_TYPE_ELEMENT | PCB_TYPE_SUBC) #define PCB_CHANGESQUARE_TYPES \ - (PCB_TYPE_ELEMENT | PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_VIA) + (PCB_TYPE_ELEMENT | PCB_TYPE_SUBC | PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_VIA) #define PCB_CHANGEOCTAGON_TYPES \ - (PCB_TYPE_ELEMENT | PCB_TYPE_PIN | PCB_TYPE_VIA) + (PCB_TYPE_ELEMENT | PCB_TYPE_SUBC | PCB_TYPE_PIN | PCB_TYPE_VIA) #define PCB_CHANGEJOIN_TYPES \ (PCB_TYPE_ARC | PCB_TYPE_LINE | PCB_TYPE_TEXT) Index: trunk/src/copy.h =================================================================== --- trunk/src/copy.h (revision 9196) +++ trunk/src/copy.h (revision 9197) @@ -35,8 +35,8 @@ * some defines */ #define PCB_COPY_TYPES \ - (PCB_TYPE_VIA | PCB_TYPE_LINE | PCB_TYPE_TEXT | \ - PCB_TYPE_ELEMENT | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_POLYGON | PCB_TYPE_ARC) + (PCB_TYPE_VIA | PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT | \ + PCB_TYPE_SUBC | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_POLYGON | PCB_TYPE_ARC) void *pcb_copy_obj(int, void *, void *, void *, pcb_coord_t, pcb_coord_t); Index: trunk/src/move.h =================================================================== --- trunk/src/move.h (revision 9196) +++ trunk/src/move.h (revision 9197) @@ -41,7 +41,7 @@ } #define PCB_MOVE_TYPES \ - (PCB_TYPE_VIA | PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT | PCB_TYPE_ELEMENT_NAME | \ + (PCB_TYPE_VIA | PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT | PCB_TYPE_SUBC | PCB_TYPE_ELEMENT_NAME | \ PCB_TYPE_POLYGON | PCB_TYPE_POLYGON_POINT | PCB_TYPE_LINE_POINT | PCB_TYPE_ARC | PCB_TYPE_ARC_POINT) #define PCB_MOVETOLAYER_TYPES \ (PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_POLYGON | PCB_TYPE_RATLINE | PCB_TYPE_ARC) Index: trunk/src/remove.h =================================================================== --- trunk/src/remove.h (revision 9196) +++ trunk/src/remove.h (revision 9197) @@ -35,7 +35,7 @@ * some constants */ #define PCB_REMOVE_TYPES \ - (PCB_TYPE_VIA | PCB_TYPE_LINE_POINT | PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT | \ + (PCB_TYPE_VIA | PCB_TYPE_LINE_POINT | PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT | PCB_TYPE_SUBC | \ PCB_TYPE_POLYGON_POINT | PCB_TYPE_POLYGON | PCB_TYPE_RATLINE | PCB_TYPE_ARC | PCB_TYPE_ARC_POINT) pcb_bool pcb_remove_selected(void); Index: trunk/src/rotate.h =================================================================== --- trunk/src/rotate.h (revision 9196) +++ trunk/src/rotate.h (revision 9197) @@ -52,7 +52,7 @@ } \ } while(0) -#define PCB_ROTATE_TYPES (PCB_TYPE_ELEMENT | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_ARC | PCB_TYPE_LINE_POINT | PCB_TYPE_LINE) +#define PCB_ROTATE_TYPES (PCB_TYPE_ELEMENT | PCB_TYPE_SUBC | PCB_TYPE_TEXT | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_ARC | PCB_TYPE_LINE_POINT | PCB_TYPE_LINE) void *pcb_obj_rotate90(int, void *, void *, void *, pcb_coord_t, pcb_coord_t, unsigned); void pcb_screen_obj_rotate90(pcb_coord_t, pcb_coord_t, unsigned); Index: trunk/src/select.h =================================================================== --- trunk/src/select.h (revision 9196) +++ trunk/src/select.h (revision 9197) @@ -33,7 +33,7 @@ #include "operation.h" #define PCB_SELECT_TYPES \ - (PCB_TYPE_VIA | PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_POLYGON | PCB_TYPE_ELEMENT | \ + (PCB_TYPE_VIA | PCB_TYPE_LINE | PCB_TYPE_TEXT | PCB_TYPE_POLYGON | PCB_TYPE_ELEMENT | PCB_TYPE_SUBC | \ PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_ELEMENT_NAME | PCB_TYPE_RATLINE | PCB_TYPE_ARC) pcb_bool pcb_select_object(pcb_board_t *pcb);