Index: trunk/doc/developer/renames =================================================================== --- trunk/doc/developer/renames (revision 10650) +++ trunk/doc/developer/renames (revision 10651) @@ -1732,3 +1732,17 @@ ErasePin -> pcb_pin_invalidate_erase DrawVia -> pcb_via_invalidate_draw DrawPin -> pcb_pin_invalidate_draw +draw_element_name_callback -> pcb_elem_name_draw_callback +draw_element_mark_callback -> pcb_elem_mark_draw_callback +draw_element_callback -> pcb_elem_draw_callback +draw_element_pins_and_pads -> pcb_elem_pp_draw +draw_element_package -> pcb_elem_package_draw +draw_element_name -> pcb_elem_name_draw +draw_element -> pcb_elem_draw +EraseElementPinsAndPads -> pcb_elem_pp_invalidate_erase +EraseElementName -> pcb_elem_name_invalidate_erase +EraseElement -> pcb_elem_invalidate_erase +DrawElementPinsAndPads -> pcb_elem_pp_invalidate_draw +DrawElementPackage -> pcb_elem_package_invalidate_draw +DrawElementName -> pcb_elem_name_invalidate_draw +DrawElement -> pcb_elem_invalidate_draw Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 10650) +++ trunk/src/action_helper.c (revision 10651) @@ -686,7 +686,7 @@ /* always re-draw it since I'm too lazy * to tell if a selected flag changed */ - DrawElement(element); + pcb_elem_invalidate_draw(element); pcb_draw(); pcb_hid_actionl("Report", "Object", NULL); } @@ -1108,7 +1108,7 @@ for (i = 0; i < PCB_MAX_ELEMENTNAMES; i++) { if (i == save_n) - EraseElementName(e); + pcb_elem_name_invalidate_erase(e); pcb_r_delete_entry(PCB->Data->name_tree[i], (pcb_box_t *) & (e->Name[i])); memcpy(&(e->Name[i]), &(estr[i]), sizeof(pcb_text_t)); e->Name[i].Element = e; @@ -1115,7 +1115,7 @@ pcb_text_bbox(pcb_font(PCB, 0, 1), &(e->Name[i])); pcb_r_insert_entry(PCB->Data->name_tree[i], (pcb_box_t *) & (e->Name[i]), 0); if (i == save_n) - DrawElementName(e); + pcb_elem_name_invalidate_draw(e); } } } Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 10650) +++ trunk/src/draw.c (revision 10651) @@ -287,7 +287,7 @@ /* Draw element Marks */ if (PCB->PinOn) - pcb_r_search(PCB->Data->element_tree, drawn_area, NULL, draw_element_mark_callback, NULL, NULL); + pcb_r_search(PCB->Data->element_tree, drawn_area, NULL, pcb_elem_mark_draw_callback, NULL, NULL); if (PCB->SubcOn) pcb_r_search(PCB->Data->subc_tree, drawn_area, NULL, draw_subc_mark_callback, NULL, NULL); @@ -506,7 +506,7 @@ pcb_poly_invalidate_erase((pcb_polygon_t *) ptr); break; case PCB_TYPE_ELEMENT: - EraseElement((pcb_element_t *) ptr); + pcb_elem_invalidate_erase((pcb_element_t *) ptr); break; case PCB_TYPE_SUBC: EraseSubc((pcb_subc_t *)ptr); @@ -554,7 +554,7 @@ break; case PCB_TYPE_ELEMENT: if (pcb_silk_on(PCB) && (PCB_FRONT((pcb_element_t *) ptr2) || PCB->InvisibleObjectsOn)) - DrawElement((pcb_element_t *) ptr2); + pcb_elem_invalidate_draw((pcb_element_t *) ptr2); break; case PCB_TYPE_RATLINE: if (PCB->RatOn) @@ -570,7 +570,7 @@ break; case PCB_TYPE_ELEMENT_NAME: if (pcb_silk_on(PCB) && (PCB_FRONT((pcb_element_t *) ptr2) || PCB->InvisibleObjectsOn)) - DrawElementName((pcb_element_t *) ptr1); + pcb_elem_name_invalidate_draw((pcb_element_t *) ptr1); break; } } @@ -615,7 +615,7 @@ pcb_hid_t *old_gui = expose_begin(hid); pcb_draw_doing_pinout = pcb_true; - draw_element(ctx->content.elem); + pcb_elem_draw(ctx->content.elem); pcb_draw_doing_pinout = pcb_false; expose_end(old_gui); Index: trunk/src/draw_ly_spec.c =================================================================== --- trunk/src/draw_ly_spec.c (revision 10650) +++ trunk/src/draw_ly_spec.c (revision 10651) @@ -105,8 +105,8 @@ int side = (*(unsigned long *)lyt_side == PCB_LYT_TOP ? PCB_COMPONENT_SIDE : PCB_SOLDER_SIDE); /* draw package */ - pcb_r_search(PCB->Data->element_tree, ctx->screen, NULL, draw_element_callback, &side, NULL); - pcb_r_search(PCB->Data->name_tree[PCB_ELEMNAME_IDX_VISIBLE()], ctx->screen, NULL, draw_element_name_callback, &side, NULL); + pcb_r_search(PCB->Data->element_tree, ctx->screen, NULL, pcb_elem_draw_callback, &side, NULL); + pcb_r_search(PCB->Data->name_tree[PCB_ELEMNAME_IDX_VISIBLE()], ctx->screen, NULL, pcb_elem_name_draw_callback, &side, NULL); } static void pcb_draw_silk(unsigned long lyt_side, const pcb_box_t *drawn_area) Index: trunk/src/find_drc.c =================================================================== --- trunk/src/find_drc.c (revision 10650) +++ trunk/src/find_drc.c (revision 10651) @@ -649,7 +649,7 @@ int buflen; PCB_FLAG_SET(TheFlag, element); - DrawElement(element); + pcb_elem_invalidate_draw(element); drcerr_count++; SetThing(PCB_TYPE_ELEMENT, element, element, element); LocateError(&x, &y); Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 10650) +++ trunk/src/gui_act.c (revision 10651) @@ -237,7 +237,7 @@ case F_Description: PCB_ELEMENT_LOOP(PCB->Data); { - EraseElementName(element); + pcb_elem_name_invalidate_erase(element); } PCB_END_LOOP; switch (id) { @@ -268,7 +268,7 @@ } PCB_ELEMENT_LOOP(PCB->Data); { - DrawElementName(element); + pcb_elem_name_invalidate_draw(element); } PCB_END_LOOP; pcb_draw(); @@ -941,9 +941,9 @@ pcb_gui->get_coords(_("Select an Object"), &x, &y); if ((type = pcb_search_screen(x, y, PCB_TYPE_ELEMENT, &ptr1, &ptr2, &ptr3)) != PCB_TYPE_NONE) { pcb_undo_add_obj_to_flag(type, ptr1, ptr2, ptr3); - EraseElementName((pcb_element_t *) ptr2); + pcb_elem_name_invalidate_erase((pcb_element_t *) ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_HIDENAME, (pcb_element_t *) ptr2); - DrawElementName((pcb_element_t *) ptr2); + pcb_elem_name_invalidate_draw((pcb_element_t *) ptr2); pcb_draw(); pcb_undo_inc_serial(); } @@ -958,9 +958,9 @@ if ((PCB_FLAG_TEST(PCB_FLAG_SELECTED, element) || PCB_FLAG_TEST(PCB_FLAG_SELECTED, &PCB_ELEM_TEXT_REFDES(element))) && (PCB_FRONT(element) || PCB->InvisibleObjectsOn)) { pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT, element, element, element); - EraseElementName(element); + pcb_elem_name_invalidate_erase(element); PCB_FLAG_TOGGLE(PCB_FLAG_HIDENAME, element); - DrawElementName(element); + pcb_elem_name_invalidate_draw(element); changed = pcb_true; } } Index: trunk/src/obj_elem.c =================================================================== --- trunk/src/obj_elem.c (revision 10650) +++ trunk/src/obj_elem.c (revision 10651) @@ -457,10 +457,10 @@ { if (PCB_FLAG_TEST(PCB_FLAG_LOCK, Element)) return (pcb_false); - EraseElement(Element); + pcb_elem_invalidate_erase(Element); pcb_undo_add_obj_to_mirror(PCB_TYPE_ELEMENT, Element, Element, Element, yoff); pcb_element_mirror(PCB->Data, Element, yoff); - DrawElement(Element); + pcb_elem_invalidate_draw(Element); return (pcb_true); } @@ -491,7 +491,7 @@ #endif if (pcb && which == PCB_ELEMNAME_IDX_VISIBLE()) - EraseElementName(Element); + pcb_elem_name_invalidate_erase(Element); pcb_r_delete_entry(data->name_tree[which], &Element->Name[which].BoundingBox); @@ -501,7 +501,7 @@ pcb_r_insert_entry(data->name_tree[which], &Element->Name[which].BoundingBox, 0); if (pcb && which == PCB_ELEMNAME_IDX_VISIBLE()) - DrawElementName(Element); + pcb_elem_name_invalidate_draw(Element); return old; } @@ -509,7 +509,7 @@ void pcb_element_text_update(pcb_board_t *pcb, pcb_data_t *data, pcb_element_t *Element, int which) { if (pcb && which == PCB_ELEMNAME_IDX_VISIBLE()) - EraseElementName(Element); + pcb_elem_name_invalidate_erase(Element); pcb_r_delete_entry(data->name_tree[which], &Element->Name[which].BoundingBox); pcb_text_bbox(pcb_font(PCB, 0, 1), &Element->Name[which]); @@ -516,13 +516,13 @@ pcb_r_insert_entry(data->name_tree[which], &Element->Name[which].BoundingBox, 0); if (pcb && which == PCB_ELEMNAME_IDX_VISIBLE()) - DrawElementName(Element); + pcb_elem_name_invalidate_draw(Element); } void pcb_element_text_set_font(pcb_board_t *pcb, pcb_data_t *data, pcb_element_t *Element, int which, pcb_font_id_t fid) { if (pcb && which == PCB_ELEMNAME_IDX_VISIBLE()) - EraseElementName(Element); + pcb_elem_name_invalidate_erase(Element); pcb_r_delete_entry(data->name_tree[which], &Element->Name[which].BoundingBox); Element->Name[which].fid = fid; @@ -530,7 +530,7 @@ pcb_r_insert_entry(data->name_tree[which], &Element->Name[which].BoundingBox, 0); if (pcb && which == PCB_ELEMNAME_IDX_VISIBLE()) - DrawElementName(Element); + pcb_elem_name_invalidate_draw(Element); } /* copies data from one element to another and creates the destination; if necessary */ @@ -1460,7 +1460,7 @@ if (PCB_FLAG_TEST(PCB_FLAG_LOCK, Element)) return (NULL); if (pcb_silk_on(PCB)) - EraseElement(Element); + pcb_elem_invalidate_erase(Element); PCB_ELEMENT_PCB_LINE_LOOP(Element); { value = (ctx->chgsize.absolute) ? ctx->chgsize.absolute : line->Thickness + ctx->chgsize.delta; @@ -1482,7 +1482,7 @@ } PCB_END_LOOP; if (pcb_silk_on(PCB)) { - DrawElement(Element); + pcb_elem_invalidate_draw(Element); } if (changed) return (Element); @@ -1498,7 +1498,7 @@ if (PCB_FLAG_TEST(PCB_FLAG_LOCK, &Element->Name[0])) return (NULL); if (value <= PCB_MAX_TEXTSCALE && value >= PCB_MIN_TEXTSCALE) { - EraseElementName(Element); + pcb_elem_name_invalidate_erase(Element); PCB_ELEMENT_PCB_TEXT_LOOP(Element); { pcb_undo_add_obj_to_size(PCB_TYPE_ELEMENT_NAME, Element, text, text); @@ -1508,7 +1508,7 @@ pcb_r_insert_entry(PCB->Data->name_tree[n], (pcb_box_t *) text, 0); } PCB_END_LOOP; - DrawElementName(Element); + pcb_elem_name_invalidate_draw(Element); return (Element); } return (NULL); @@ -1662,11 +1662,11 @@ /* this call clears the polygons */ pcb_undo_add_obj_to_create(PCB_TYPE_ELEMENT, element, element, element); if (pcb_silk_on(PCB) && (PCB_FRONT(element) || PCB->InvisibleObjectsOn)) { - DrawElementName(element); - DrawElementPackage(element); + pcb_elem_name_invalidate_draw(element); + pcb_elem_package_invalidate_draw(element); } if (PCB->PinOn) { - DrawElementPinsAndPads(element); + pcb_elem_pp_invalidate_draw(element); } #ifdef DEBUG printf(" ... Leaving pcb_elemop_copy.\n"); @@ -1678,7 +1678,7 @@ void *pcb_elemop_move_name(pcb_opctx_t *ctx, pcb_element_t *Element) { if (pcb_silk_on(PCB) && (PCB_FRONT(Element) || PCB->InvisibleObjectsOn)) { - EraseElementName(Element); + pcb_elem_name_invalidate_erase(Element); PCB_ELEMENT_PCB_TEXT_LOOP(Element); { if (PCB->Data->name_tree[n]) @@ -1688,7 +1688,7 @@ pcb_r_insert_entry(PCB->Data->name_tree[n], (pcb_box_t *) text, 0); } PCB_END_LOOP; - DrawElementName(Element); + pcb_elem_name_invalidate_draw(Element); pcb_draw(); } else { @@ -1711,19 +1711,19 @@ pcb_bool didDraw = pcb_false; if (pcb_silk_on(PCB) && (PCB_FRONT(Element) || PCB->InvisibleObjectsOn)) { - EraseElement(Element); + pcb_elem_invalidate_erase(Element); pcb_element_move(PCB->Data, Element, ctx->move.dx, ctx->move.dy); - DrawElementName(Element); - DrawElementPackage(Element); + pcb_elem_name_invalidate_draw(Element); + pcb_elem_package_invalidate_draw(Element); didDraw = pcb_true; } else { if (PCB->PinOn) - EraseElementPinsAndPads(Element); + pcb_elem_pp_invalidate_erase(Element); pcb_element_move(PCB->Data, Element, ctx->move.dx, ctx->move.dy); } if (PCB->PinOn) { - DrawElementPinsAndPads(Element); + pcb_elem_pp_invalidate_draw(Element); didDraw = pcb_true; } if (didDraw) @@ -1768,7 +1768,7 @@ { /* erase from screen */ if ((pcb_silk_on(PCB) || PCB->PinOn) && (PCB_FRONT(Element) || PCB->InvisibleObjectsOn)) { - EraseElement(Element); + pcb_elem_invalidate_erase(Element); if (!ctx->remove.bulk) pcb_draw(); } @@ -1780,9 +1780,9 @@ /* rotates an element */ void *pcb_elemop_rotate90(pcb_opctx_t *ctx, pcb_element_t *Element) { - EraseElement(Element); + pcb_elem_invalidate_erase(Element); pcb_element_rotate90(PCB->Data, Element, ctx->rotate.center_x, ctx->rotate.center_y, ctx->rotate.number); - DrawElement(Element); + pcb_elem_invalidate_draw(Element); pcb_draw(); return (Element); } @@ -1792,7 +1792,7 @@ */ void *pcb_elemop_rotate90_name(pcb_opctx_t *ctx, pcb_element_t *Element) { - EraseElementName(Element); + pcb_elem_name_invalidate_erase(Element); PCB_ELEMENT_PCB_TEXT_LOOP(Element); { pcb_r_delete_entry(PCB->Data->name_tree[n], (pcb_box_t *) text); @@ -1800,13 +1800,13 @@ pcb_r_insert_entry(PCB->Data->name_tree[n], (pcb_box_t *) text, 0); } PCB_END_LOOP; - DrawElementName(Element); + pcb_elem_name_invalidate_draw(Element); pcb_draw(); return (Element); } /*** draw ***/ -void draw_element_name(pcb_element_t * element) +void pcb_elem_name_draw(pcb_element_t * element) { if ((conf_core.editor.hide_names && pcb_gui->gui) || PCB_FLAG_TEST(PCB_FLAG_HIDENAME, element)) return; @@ -1828,7 +1828,7 @@ } -pcb_r_dir_t draw_element_name_callback(const pcb_box_t * b, void *cl) +pcb_r_dir_t pcb_elem_name_draw_callback(const pcb_box_t * b, void *cl) { pcb_text_t *text = (pcb_text_t *) b; pcb_element_t *element = (pcb_element_t *) text->Element; @@ -1838,11 +1838,11 @@ return PCB_R_DIR_NOT_FOUND; if (PCB_ON_SIDE(element, *side)) - draw_element_name(element); + pcb_elem_name_draw(element); return PCB_R_DIR_NOT_FOUND; } -void draw_element_pins_and_pads(pcb_element_t * element) +void pcb_elem_pp_draw(pcb_element_t * element) { PCB_PAD_LOOP(element); { @@ -1858,7 +1858,7 @@ } -void draw_element_package(pcb_element_t * element) +void pcb_elem_package_draw(pcb_element_t * element) { /* set color and draw lines, arcs, text and pins */ if (pcb_draw_doing_pinout || pcb_draw_doing_assy) @@ -1883,20 +1883,20 @@ PCB_END_LOOP; } -void draw_element(pcb_element_t *element) +void pcb_elem_draw(pcb_element_t *element) { - draw_element_package(element); - draw_element_name(element); - draw_element_pins_and_pads(element); + pcb_elem_package_draw(element); + pcb_elem_name_draw(element); + pcb_elem_pp_draw(element); } -pcb_r_dir_t draw_element_callback(const pcb_box_t * b, void *cl) +pcb_r_dir_t pcb_elem_draw_callback(const pcb_box_t * b, void *cl) { pcb_element_t *element = (pcb_element_t *) b; int *side = cl; if (PCB_ON_SIDE(element, *side)) - draw_element_package(element); + pcb_elem_package_draw(element); return PCB_R_DIR_FOUND_CONTINUE; } @@ -1938,7 +1938,7 @@ } } -pcb_r_dir_t draw_element_mark_callback(const pcb_box_t * b, void *cl) +pcb_r_dir_t pcb_elem_mark_draw_callback(const pcb_box_t * b, void *cl) { pcb_element_t *element = (pcb_element_t *) b; @@ -1946,7 +1946,7 @@ return PCB_R_DIR_FOUND_CONTINUE; } -void EraseElement(pcb_element_t *Element) +void pcb_elem_invalidate_erase(pcb_element_t *Element) { PCB_ELEMENT_PCB_LINE_LOOP(Element); { @@ -1958,12 +1958,12 @@ pcb_arc_invalidate_erase(arc); } PCB_END_LOOP; - EraseElementName(Element); - EraseElementPinsAndPads(Element); + pcb_elem_name_invalidate_erase(Element); + pcb_elem_pp_invalidate_erase(Element); pcb_flag_erase(&Element->Flags); } -void EraseElementPinsAndPads(pcb_element_t *Element) +void pcb_elem_pp_invalidate_erase(pcb_element_t *Element) { PCB_PIN_LOOP(Element); { @@ -1977,7 +1977,7 @@ PCB_END_LOOP; } -void EraseElementName(pcb_element_t *Element) +void pcb_elem_name_invalidate_erase(pcb_element_t *Element) { if (PCB_FLAG_TEST(PCB_FLAG_HIDENAME, Element)) { return; @@ -1985,14 +1985,14 @@ pcb_text_invalidate_draw(NULL, &PCB_ELEM_TEXT_VISIBLE(PCB, Element)); } -void DrawElement(pcb_element_t *Element) +void pcb_elem_invalidate_draw(pcb_element_t *Element) { - DrawElementPackage(Element); - DrawElementName(Element); - DrawElementPinsAndPads(Element); + pcb_elem_package_invalidate_draw(Element); + pcb_elem_name_invalidate_draw(Element); + pcb_elem_pp_invalidate_draw(Element); } -void DrawElementName(pcb_element_t *Element) +void pcb_elem_name_invalidate_draw(pcb_element_t *Element) { if (PCB_FLAG_TEST(PCB_FLAG_HIDENAME, Element)) return; @@ -1999,7 +1999,7 @@ pcb_text_invalidate_draw(NULL, &PCB_ELEM_TEXT_VISIBLE(PCB, Element)); } -void DrawElementPackage(pcb_element_t *Element) +void pcb_elem_package_invalidate_draw(pcb_element_t *Element) { PCB_ELEMENT_PCB_LINE_LOOP(Element); { @@ -2013,7 +2013,7 @@ PCB_END_LOOP; } -void DrawElementPinsAndPads(pcb_element_t *Element) +void pcb_elem_pp_invalidate_draw(pcb_element_t *Element) { PCB_PAD_LOOP(Element); { Index: trunk/src/obj_elem_draw.h =================================================================== --- trunk/src/obj_elem_draw.h (revision 10650) +++ trunk/src/obj_elem_draw.h (revision 10651) @@ -28,21 +28,21 @@ /* Include rtree.h for these */ #ifdef PCB_RTREE_H -pcb_r_dir_t draw_element_name_callback(const pcb_box_t * b, void *cl); -pcb_r_dir_t draw_element_mark_callback(const pcb_box_t * b, void *cl); -pcb_r_dir_t draw_element_callback(const pcb_box_t * b, void *cl); +pcb_r_dir_t pcb_elem_name_draw_callback(const pcb_box_t * b, void *cl); +pcb_r_dir_t pcb_elem_mark_draw_callback(const pcb_box_t * b, void *cl); +pcb_r_dir_t pcb_elem_draw_callback(const pcb_box_t * b, void *cl); #endif -void draw_element_package(pcb_element_t * element); -void draw_element_name(pcb_element_t * element); -void draw_element_pins_and_pads(pcb_element_t * element); -void draw_element(pcb_element_t *element); +void pcb_elem_package_draw(pcb_element_t * element); +void pcb_elem_name_draw(pcb_element_t * element); +void pcb_elem_pp_draw(pcb_element_t * element); +void pcb_elem_draw(pcb_element_t *element); -void EraseElement(pcb_element_t *Element); -void EraseElementPinsAndPads(pcb_element_t *Element); -void EraseElementName(pcb_element_t *Element); +void pcb_elem_invalidate_erase(pcb_element_t *Element); +void pcb_elem_pp_invalidate_erase(pcb_element_t *Element); +void pcb_elem_name_invalidate_erase(pcb_element_t *Element); -void DrawElement(pcb_element_t *Element); -void DrawElementName(pcb_element_t *Element); -void DrawElementPackage(pcb_element_t *Element); -void DrawElementPinsAndPads(pcb_element_t *Element); +void pcb_elem_invalidate_draw(pcb_element_t *Element); +void pcb_elem_name_invalidate_draw(pcb_element_t *Element); +void pcb_elem_package_invalidate_draw(pcb_element_t *Element); +void pcb_elem_pp_invalidate_draw(pcb_element_t *Element); Index: trunk/src/select.c =================================================================== --- trunk/src/select.c (revision 10650) +++ trunk/src/select.c (revision 10651) @@ -80,11 +80,11 @@ if (redraw) { if (pcb_silk_on(pcb) && ((PCB_FLAG_TEST(PCB_FLAG_ONSOLDER, element) != 0) == PCB_SWAP_IDENT || pcb->InvisibleObjectsOn)) if (pcb_silk_on(pcb)) { - DrawElementName(element); - DrawElementPackage(element); + pcb_elem_name_invalidate_draw(element); + pcb_elem_package_invalidate_draw(element); } if (pcb->PinOn) - DrawElementPinsAndPads(element); + pcb_elem_pp_invalidate_draw(element); } } @@ -99,7 +99,7 @@ PCB_END_LOOP; if (redraw) - DrawElementName(element); + pcb_elem_name_invalidate_draw(element); } @@ -408,7 +408,7 @@ } PCB_END_LOOP; if (pcb_silk_on(pcb)) - DrawElementName(element); + pcb_elem_name_invalidate_draw(element); } if ((pcb->PinOn || !Flag) && PCB_ELEMENT_NEAR_BOX(element, Box)) if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, element) != Flag) { @@ -432,7 +432,7 @@ } PCB_END_LOOP; if (pcb->PinOn) - DrawElement(element); + pcb_elem_invalidate_draw(element); gotElement = pcb_true; } } @@ -723,8 +723,8 @@ PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, text); } PCB_END_LOOP; - DrawElementName(element); - DrawElement(element); + pcb_elem_name_invalidate_draw(element); + pcb_elem_invalidate_draw(element); changed = pcb_true; } } Index: trunk/src/undo.c =================================================================== --- trunk/src/undo.c (revision 10650) +++ trunk/src/undo.c (revision 10651) @@ -564,10 +564,10 @@ if (type == PCB_TYPE_ELEMENT) { pcb_element_t *element = (pcb_element_t *) ptr3; if (andDraw) - EraseElement(element); + pcb_elem_invalidate_erase(element); pcb_element_mirror(PCB->Data, element, Entry->Data.Move.DY); if (andDraw) - DrawElement(element); + pcb_elem_invalidate_draw(element); return (pcb_true); } pcb_message(PCB_MSG_ERROR, "hace Internal error: UndoMirror on object type %d\n", type);