Index: trunk/src/search.h =================================================================== --- trunk/src/search.h (revision 11658) +++ trunk/src/search.h (revision 11659) @@ -68,6 +68,9 @@ #define PCB_POLYGON_IN_BOX(p,b) \ (PCB_BOX_IN_BOX(&((p)->BoundingBox), (b))) +#define PCB_SUBC_IN_BOX(s,b) \ + (PCB_BOX_IN_BOX(&((s)->BoundingBox), (b))) + #define PCB_ELEMENT_IN_BOX(e,b) \ (PCB_BOX_IN_BOX(&((e)->BoundingBox), (b))) @@ -109,6 +112,9 @@ #define PCB_POLYGON_TOUCHES_BOX(p,b) \ (PCB_BOX_TOUCHES_BOX(&((p)->BoundingBox), (b))) +#define PCB_SUBC_TOUCHES_BOX(s,b) \ + (PCB_BOX_TOUCHES_BOX(&((s)->BoundingBox), (b))) + #define PCB_ELEMENT_TOUCHES_BOX(e,b) \ (PCB_BOX_TOUCHES_BOX(&((e)->BoundingBox), (b))) @@ -137,6 +143,9 @@ #define PCB_POLYGON_NEAR_BOX(p,b) \ (PCB_IS_BOX_NEGATIVE(b) ? PCB_POLYGON_TOUCHES_BOX(p,b) : PCB_POLYGON_IN_BOX(p,b)) +#define PCB_SUBC_NEAR_BOX(s,b) \ + (PCB_IS_BOX_NEGATIVE(b) ? PCB_SUBC_TOUCHES_BOX(s,b) : PCB_SUBC_IN_BOX(s,b)) + #define PCB_ELEMENT_NEAR_BOX(e,b) \ (PCB_IS_BOX_NEGATIVE(b) ? PCB_ELEMENT_TOUCHES_BOX(e,b) : PCB_ELEMENT_IN_BOX(e,b)) Index: trunk/src/select.c =================================================================== --- trunk/src/select.c (revision 11658) +++ trunk/src/select.c (revision 11659) @@ -368,7 +368,7 @@ if (PCB->SubcOn) { PCB_SUBC_LOOP(pcb->Data); { - if (PCB_POLYGON_NEAR_BOX(subc, Box) + if (PCB_SUBC_NEAR_BOX(subc, Box) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, subc) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, subc) != Flag) {