Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 21810) +++ trunk/src/data.c (revision 21811) @@ -799,12 +799,13 @@ #include "obj_arc_draw.h" #include "obj_line_draw.h" #include "conf_core.h" -void pcb_data_clear_obj_flag(pcb_data_t *data, pcb_objtype_t tmask, unsigned long flag, int redraw) +unsigned long pcb_data_clear_obj_flag(pcb_data_t *data, pcb_objtype_t tmask, unsigned long flag, int redraw) { pcb_rtree_it_t it; pcb_box_t *n; int li; pcb_layer_t *l; + unsigned long cnt = 0; conf_core.temp.rat_warn = pcb_false; @@ -814,6 +815,7 @@ PCB_FLAG_CLEAR(flag, (pcb_any_obj_t *)n); if (redraw) pcb_pstk_invalidate_draw((pcb_pstk_t *)n); + cnt++; } } pcb_r_end(&it); @@ -831,6 +833,7 @@ PCB_FLAG_CLEAR(flag, (pcb_any_obj_t *)n); if (redraw) pcb_line_invalidate_draw(l, (pcb_line_t *)n); + cnt++; } } pcb_r_end(&it); @@ -842,6 +845,7 @@ PCB_FLAG_CLEAR(flag, (pcb_any_obj_t *)n); if (redraw) pcb_arc_invalidate_draw(l, (pcb_arc_t *)n); + cnt++; } } pcb_r_end(&it); @@ -853,6 +857,7 @@ PCB_FLAG_CLEAR(flag, (pcb_any_obj_t *)n); if (redraw) pcb_poly_invalidate_draw(l, (pcb_poly_t *)n); + cnt++; } } pcb_r_end(&it); @@ -864,16 +869,18 @@ PCB_FLAG_CLEAR(flag, (pcb_any_obj_t *)n); if (redraw) pcb_text_invalidate_draw(l, (pcb_text_t *)n); + cnt++; } } pcb_r_end(&it); } } + return cnt; } -void pcb_data_clear_flag(pcb_data_t *data, unsigned long flag, int redraw) +unsigned long pcb_data_clear_flag(pcb_data_t *data, unsigned long flag, int redraw) { - pcb_data_clear_obj_flag(data, PCB_OBJ_CLASS_REAL, flag, redraw); + return pcb_data_clear_obj_flag(data, PCB_OBJ_CLASS_REAL, flag, redraw); } Index: trunk/src/data.h =================================================================== --- trunk/src/data.h (revision 21810) +++ trunk/src/data.h (revision 21811) @@ -217,9 +217,9 @@ void pcb_data_flag_change(pcb_data_t *data, pcb_objtype_t mask, int how, unsigned long flags); /* Clear specific static flag from all objects, optionally with matching - object types only. */ -void pcb_data_clear_obj_flag(pcb_data_t *data, pcb_objtype_t tmask, unsigned long flag, int redraw); -void pcb_data_clear_flag(pcb_data_t *data, unsigned long flag, int redraw); + object types only. Returns number of object changed. */ +unsigned long pcb_data_clear_obj_flag(pcb_data_t *data, pcb_objtype_t tmask, unsigned long flag, int redraw); +unsigned long pcb_data_clear_flag(pcb_data_t *data, unsigned long flag, int redraw); /* Clear the given dyflag bit from all objects under data */ void pcb_data_dynflag_clear(pcb_data_t *data, pcb_dynf_t dynf);