Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 37887) +++ trunk/src/data.c (revision 37888) @@ -688,14 +688,14 @@ #define rsearch(tree) \ do { \ - rnd_r_dir_t tmp = rnd_r_search(tree, starting_region, region_in_search, rectangle_in_region, closure, num_found); \ - if (tmp == RND_R_DIR_CANCEL) return tmp; \ + rnd_rtree_dir_t tmp = rnd_rtree_search_any(tree, starting_region, region_in_search, rectangle_in_region, closure, num_found); \ + if (tmp == rnd_RTREE_DIR_STOP) return tmp; \ res |= tmp; \ } while(0); -rnd_r_dir_t pcb_data_r_search(pcb_data_t *data, pcb_objtype_t types, const rnd_box_t *starting_region, - rnd_r_dir_t (*region_in_search) (const rnd_box_t *region, void *cl), - rnd_r_dir_t (*rectangle_in_region) (const rnd_box_t *box, void *cl), +rnd_r_dir_t pcb_data_r_search(pcb_data_t *data, pcb_objtype_t types, const rnd_rtree_box_t *starting_region, + rnd_rtree_dir_t (*region_in_search)(void *cl, void *obj, const rnd_rtree_box_t *region), + rnd_rtree_dir_t (*rectangle_in_region)(void *cl, void *obj, const rnd_rtree_box_t *box), void *closure, int *num_found, rnd_bool vis_only) { rnd_layer_id_t lid; Index: trunk/src/data.h =================================================================== --- trunk/src/data.h (revision 37887) +++ trunk/src/data.h (revision 37888) @@ -195,9 +195,9 @@ /* rsearch on all trees matching types of data */ -rnd_r_dir_t pcb_data_r_search(pcb_data_t *data, pcb_objtype_t types, const rnd_box_t *starting_region, - rnd_r_dir_t (*region_in_search) (const rnd_box_t *region, void *cl), - rnd_r_dir_t (*rectangle_in_region) (const rnd_box_t *box, void *cl), +rnd_r_dir_t pcb_data_r_search(pcb_data_t *data, pcb_objtype_t types, const rnd_rtree_box_t *starting_region, + rnd_rtree_dir_t (*region_in_search)(void *cl, void *obj, const rnd_rtree_box_t *region), + rnd_rtree_dir_t (*rectangle_in_region)(void *cl, void *obj, const rnd_rtree_box_t *box), void *closure, int *num_found, rnd_bool vis_only); /* Either pcb->data or the subcircuit's data if PCB is a subc (footprint edit mode) */ Index: trunk/src/select.c =================================================================== --- trunk/src/select.c (revision 37887) +++ trunk/src/select.c (revision 37888) @@ -431,20 +431,20 @@ rnd_bool invert; } select_ctx_t; -static rnd_r_dir_t pcb_select_block_cb(const rnd_box_t *box, void *cl) +static rnd_rtree_dir_t pcb_select_block_cb(void *cl, void *obj_, const rnd_rtree_box_t *box) { select_ctx_t *ctx = cl; - pcb_any_obj_t *obj = (pcb_any_obj_t *)box; + pcb_any_obj_t *obj = (pcb_any_obj_t *)obj_; if (!ctx->invert && (PCB_FLAG_TEST(PCB_FLAG_SELECTED, obj) == ctx->flag)) /* cheap check on the flag: don't do anything if the flag is already right */ - return RND_R_DIR_NOT_FOUND; + return rnd_RTREE_DIR_NOT_FOUND_CONT; /* do not let locked object selected, but allow deselection */ if ((PCB_FLAG_TEST(PCB_FLAG_LOCK, obj) == rnd_true) && (ctx->flag)) - return RND_R_DIR_NOT_FOUND; + return rnd_RTREE_DIR_NOT_FOUND_CONT; if (!pcb_obj_near_box(obj, &ctx->box)) /* detailed box matching */ - return RND_R_DIR_NOT_FOUND; + return rnd_RTREE_DIR_NOT_FOUND_CONT; pcb_undo_add_obj_to_flag((void *)obj); pcb_draw_obj(obj); @@ -453,7 +453,7 @@ else PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, ctx->flag, obj); pcb_extobj_sync_floater_flags(ctx->pcb, obj, 1, 1); - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; } /* ---------------------------------------------------------------------- @@ -474,7 +474,7 @@ fix_box_dir(Box, 1); - return pcb_data_r_search(pcb->Data, PCB_OBJ_ANY, Box, NULL, pcb_select_block_cb, &ctx, NULL, vis_only) == RND_R_DIR_FOUND_CONTINUE; + return pcb_data_r_search(pcb->Data, PCB_OBJ_ANY, (rnd_rtree_box_t *)Box, NULL, pcb_select_block_cb, &ctx, NULL, vis_only) & rnd_RTREE_DIR_FOUND; } /* ----------------------------------------------------------------------