Index: trunk/src/board.h =================================================================== --- trunk/src/board.h (revision 28096) +++ trunk/src/board.h (revision 28097) @@ -131,7 +131,7 @@ #define PCB_CSWAP_Y(y, h, cond) ((cond) ? (h+PCB_SWAP_SIGN_Y(y)) : (y)) /* Conditionally allow subc parts to be reached directly in search masks */ -#define PCB_LOOSE_SUBC (PCB->loose_subc ? PCB_OBJ_SUBC_PART : 0) +#define PCB_LOOSE_SUBC(pcb) ((pcb)->loose_subc ? PCB_OBJ_SUBC_PART : 0) /* changes the name of a layout; Name is allocated by the caller (no strdup() is made) */ Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 28096) +++ trunk/src/object_act.c (revision 28097) @@ -353,7 +353,7 @@ void *ptr1, *ptr2, *ptr3; pcb_hid_get_coords("Select an Object", &x, &y, 0); - if ((type = pcb_search_screen(x, y, PCB_MOVETOLAYER_TYPES | PCB_LOOSE_SUBC, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { + if ((type = pcb_search_screen(x, y, PCB_MOVETOLAYER_TYPES | PCB_LOOSE_SUBC(PCB), &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { pcb_layer_t *target = PCB_CURRLAYER(pcb); pcb_any_obj_t *o = ptr2; Index: trunk/src/rotate.c =================================================================== --- trunk/src/rotate.c (revision 28096) +++ trunk/src/rotate.c (revision 28097) @@ -143,7 +143,7 @@ { int type; void *ptr1, *ptr2, *ptr3; - if ((type = pcb_search_screen(X, Y, PCB_ROTATE_TYPES | PCB_LOOSE_SUBC, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { + if ((type = pcb_search_screen(X, Y, PCB_ROTATE_TYPES | PCB_LOOSE_SUBC(PCB), &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { pcb_any_obj_t *obj = (pcb_any_obj_t *)ptr2; if (PCB_FLAG_TEST(PCB_FLAG_LOCK, obj)) { pcb_message(PCB_MSG_WARNING, "Sorry, %s object is locked\n", pcb_obj_type_name(obj->type)); @@ -163,7 +163,7 @@ { int type; void *ptr1, *ptr2, *ptr3; - if ((type = pcb_search_screen(X, Y, PCB_ROTATE_TYPES | PCB_LOOSE_SUBC, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { + if ((type = pcb_search_screen(X, Y, PCB_ROTATE_TYPES | PCB_LOOSE_SUBC(PCB), &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { pcb_any_obj_t *obj = (pcb_any_obj_t *)ptr2; if (PCB_FLAG_TEST(PCB_FLAG_LOCK, obj)) { pcb_message(PCB_MSG_WARNING, "Sorry, %s object is locked\n", pcb_obj_type_name(obj->type)); Index: trunk/src/select.c =================================================================== --- trunk/src/select.c (revision 28096) +++ trunk/src/select.c (revision 28097) @@ -68,7 +68,7 @@ pcb_bool changed = pcb_true; - type = pcb_search_screen(pcb_crosshair.X, pcb_crosshair.Y, PCB_SELECT_TYPES | PCB_LOOSE_SUBC | PCB_OBJ_FLOATER, &ptr1, &ptr2, &ptr3); + type = pcb_search_screen(pcb_crosshair.X, pcb_crosshair.Y, PCB_SELECT_TYPES | PCB_LOOSE_SUBC(PCB) | PCB_OBJ_FLOATER, &ptr1, &ptr2, &ptr3); if (type == PCB_OBJ_VOID || PCB_FLAG_TEST(PCB_FLAG_LOCK, (pcb_any_obj_t *) ptr2)) return pcb_false; switch (type) { Index: trunk/src/tool_arrow.c =================================================================== --- trunk/src/tool_arrow.c (revision 28096) +++ trunk/src/tool_arrow.c (revision 28097) @@ -143,7 +143,7 @@ * (pcb_tool_note.Moving) or clicked on a MOVE_TYPE * (pcb_tool_note.Hit) */ - for (test = (PCB_SELECT_TYPES | PCB_MOVE_TYPES | PCB_OBJ_FLOATER | PCB_LOOSE_SUBC) & ~PCB_OBJ_RAT; test; test &= ~type) { + for (test = (PCB_SELECT_TYPES | PCB_MOVE_TYPES | PCB_OBJ_FLOATER | PCB_LOOSE_SUBC(PCB)) & ~PCB_OBJ_RAT; test; test &= ~type) { /* grab object/point (e.g. line endpoint) for edit */ type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, test, &ptr1, &ptr2, &ptr3); if (!pcb_tool_note.Hit && (type & PCB_MOVE_TYPES) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, (pcb_any_obj_t *) ptr2)) { @@ -154,7 +154,7 @@ pcb_crosshair.AttachedObject.tx = pcb_tool_note.X; pcb_crosshair.AttachedObject.ty = pcb_tool_note.Y; } - if (!pcb_tool_note.Moving && (type & (PCB_SELECT_TYPES | PCB_LOOSE_SUBC)) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, (pcb_any_obj_t *) ptr2)) { + if (!pcb_tool_note.Moving && (type & (PCB_SELECT_TYPES | PCB_LOOSE_SUBC(PCB))) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, (pcb_any_obj_t *) ptr2)) { pcb_tool_note.Moving = pcb_true; /* remember where the user clicked to start this op */ pcb_crosshair.AttachedObject.tx = pcb_crosshair.AttachedObject.X = pcb_tool_note.X; Index: trunk/src/tool_remove.c =================================================================== --- trunk/src/tool_remove.c (revision 28096) +++ trunk/src/tool_remove.c (revision 28097) @@ -51,7 +51,7 @@ pcb_any_obj_t *obj; int type; - if ((type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, PCB_REMOVE_TYPES | PCB_LOOSE_SUBC | PCB_OBJ_FLOATER, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { + if ((type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, PCB_REMOVE_TYPES | PCB_LOOSE_SUBC(PCB) | PCB_OBJ_FLOATER, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { obj = (pcb_any_obj_t *)ptr2; if (PCB_FLAG_TEST(PCB_FLAG_LOCK, obj)) { pcb_message(PCB_MSG_WARNING, "Sorry, %s object is locked\n", pcb_obj_type_name(obj->type)); Index: trunk/src_plugins/dialogs/dlg_flag_edit.c =================================================================== --- trunk/src_plugins/dialogs/dlg_flag_edit.c (revision 28096) +++ trunk/src_plugins/dialogs/dlg_flag_edit.c (revision 28097) @@ -98,7 +98,7 @@ pcb_coord_t x, y; void *ptr1, *ptr2, *ptr3; pcb_hid_get_coords("Click on object to change flags of", &x, &y, 0); - type = pcb_search_screen(x, y, PCB_FLAGEDIT_TYPES | PCB_LOOSE_SUBC, &ptr1, &ptr2, &ptr3); + type = pcb_search_screen(x, y, PCB_FLAGEDIT_TYPES | PCB_LOOSE_SUBC(PCB), &ptr1, &ptr2, &ptr3); ctx.ptr1 = ptr1; ctx.obj = (pcb_any_obj_t *)ptr2; ctx.obj_type = (type & 0xFFFF) | (type & PCB_OBJ_PSTK); Index: trunk/src_plugins/dialogs/dlg_padstack.c =================================================================== --- trunk/src_plugins/dialogs/dlg_padstack.c (revision 28096) +++ trunk/src_plugins/dialogs/dlg_padstack.c (revision 28097) @@ -993,7 +993,7 @@ void *ptr1, *ptr2 = NULL, *ptr3; long type; pcb_hid_get_coords("Click on a padstack to edit", &x, &y, 0); - type = pcb_search_screen(x, y, PCB_OBJ_PSTK | PCB_OBJ_SUBC_PART | PCB_LOOSE_SUBC, &ptr1, &ptr2, &ptr3); + type = pcb_search_screen(x, y, PCB_OBJ_PSTK | PCB_OBJ_SUBC_PART | PCB_LOOSE_SUBC(PCB), &ptr1, &ptr2, &ptr3); if (type != PCB_OBJ_PSTK) { pcb_message(PCB_MSG_ERROR, "Need a padstack.\n"); PCB_ACT_IRES(1);