Index: trunk/src/select.c =================================================================== --- trunk/src/select.c (revision 34606) +++ trunk/src/select.c (revision 34607) @@ -480,9 +480,9 @@ /* ---------------------------------------------------------------------- * List all visible objects within the passed box */ -long int *pcb_list_block(pcb_board_t *pcb, rnd_box_t *Box, int *len) +long int *pcb_list_block(pcb_board_t *pcb, rnd_box_t *Box, int *len, rnd_bool and_draw) { - return ListBlock_(pcb, Box, 1, PCB_LYT_ANYWHERE|PCB_LYT_ANYTHING, len, NULL, NULL, (len != NULL)); + return ListBlock_(pcb, Box, 1, PCB_LYT_ANYWHERE|PCB_LYT_ANYTHING, len, NULL, NULL, and_draw); } int pcb_list_block_cb(pcb_board_t *pcb, rnd_box_t *Box, void *(cb)(void *ctx, pcb_any_obj_t *obj), void *ctx) Index: trunk/src/select.h =================================================================== --- trunk/src/select.h (revision 34606) +++ trunk/src/select.h (revision 34607) @@ -39,8 +39,9 @@ rnd_bool pcb_select_object(pcb_board_t *pcb); rnd_bool pcb_select_block(pcb_board_t *pcb, rnd_box_t *Box, rnd_bool flag, rnd_bool vis_only, rnd_bool invert); -/* List visible objects on screen within a box; return a list of IDs */ -long int *pcb_list_block(pcb_board_t *pcb, rnd_box_t *Box, int *len); +/* List visible objects on screen within a box; return a list of IDs; if and_draw is + true, also select the objects. */ +long int *pcb_list_block(pcb_board_t *pcb, rnd_box_t *Box, int *len, rnd_bool and_draw); /* List visible objects on screen within a box; return number of objects, call a callback on each object found. Always creates the return list (caller must Index: trunk/src_plugins/tool_std/tool_arrow.c =================================================================== --- trunk/src_plugins/tool_std/tool_arrow.c (revision 34606) +++ trunk/src_plugins/tool_std/tool_arrow.c (revision 34607) @@ -106,7 +106,7 @@ box.X2 = hl->tool_x - PCB_SLOP * rnd_pixel_slop; box.Y1 = hl->tool_y + PCB_SLOP * rnd_pixel_slop; box.Y2 = hl->tool_y - PCB_SLOP * rnd_pixel_slop; - pcb_crosshair.drags = pcb_list_block(pcb, &box, &pcb_crosshair.drags_len); + pcb_crosshair.drags = pcb_list_block(pcb, &box, &pcb_crosshair.drags_len, 0); pcb_crosshair.drags_current = 0; pcb_tool_attach_for_copy(hl, hl->tool_x, hl->tool_y, rnd_true); }