Index: data.c =================================================================== --- data.c (revision 17689) +++ data.c (revision 17690) @@ -661,3 +661,62 @@ pcb_data_flag_change(((pcb_subc_t *)o)->data, mask, how, flags); } } + +#warning TODO: rewrite to be more generic +#include "obj_pstk_draw.h" +#include "obj_text_draw.h" +#include "obj_poly_draw.h" +#include "obj_arc_draw.h" +#include "obj_line_draw.h" +#include "conf_core.h" +void pcb_clear_warnings() +{ + pcb_rtree_it_t it; + pcb_box_t *n; + int li; + pcb_layer_t *l; + + conf_core.temp.rat_warn = pcb_false; + + for(n = pcb_r_first(PCB->Data->padstack_tree, &it); n != NULL; n = pcb_r_next(&it)) { + if (PCB_FLAG_TEST(PCB_FLAG_WARN, (pcb_any_obj_t *)n)) { + PCB_FLAG_CLEAR(PCB_FLAG_WARN, (pcb_any_obj_t *)n); + pcb_pstk_invalidate_draw((pcb_pstk_t *)n); + } + } + pcb_r_end(&it); + + for(li = 0, l = PCB->Data->Layer; li < PCB->Data->LayerN; li++,l++) { + for(n = pcb_r_first(l->line_tree, &it); n != NULL; n = pcb_r_next(&it)) { + if (PCB_FLAG_TEST(PCB_FLAG_WARN, (pcb_any_obj_t *)n)) { + PCB_FLAG_CLEAR(PCB_FLAG_WARN, (pcb_any_obj_t *)n); + pcb_line_invalidate_draw(l, (pcb_line_t *)n); + } + } + pcb_r_end(&it); + + for(n = pcb_r_first(l->arc_tree, &it); n != NULL; n = pcb_r_next(&it)) { + if (PCB_FLAG_TEST(PCB_FLAG_WARN, (pcb_any_obj_t *)n)) { + PCB_FLAG_CLEAR(PCB_FLAG_WARN, (pcb_any_obj_t *)n); + pcb_arc_invalidate_draw(l, (pcb_arc_t *)n); + } + } + pcb_r_end(&it); + + for(n = pcb_r_first(l->polygon_tree, &it); n != NULL; n = pcb_r_next(&it)) { + if (PCB_FLAG_TEST(PCB_FLAG_WARN, (pcb_any_obj_t *)n)) { + PCB_FLAG_CLEAR(PCB_FLAG_WARN, (pcb_any_obj_t *)n); + pcb_poly_invalidate_draw(l, (pcb_poly_t *)n); + } + } + pcb_r_end(&it); + + for(n = pcb_r_first(l->text_tree, &it); n != NULL; n = pcb_r_next(&it)) { + if (PCB_FLAG_TEST(PCB_FLAG_WARN, (pcb_any_obj_t *)n)) { + PCB_FLAG_CLEAR(PCB_FLAG_WARN, (pcb_any_obj_t *)n); + pcb_text_invalidate_draw(l, (pcb_text_t *)n); + } + } + pcb_r_end(&it); + } +}