Index: trunk/src/find_clear.c =================================================================== --- trunk/src/find_clear.c (revision 10981) +++ trunk/src/find_clear.c (revision 10982) @@ -34,7 +34,7 @@ { if (PCB_FLAG_TEST(flag, via)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_CLEAR(flag, via); if (AndDraw) pcb_via_invalidate_draw(via); @@ -48,7 +48,7 @@ { if (PCB_FLAG_TEST(flag, pin)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_CLEAR(flag, pin); if (AndDraw) pcb_pin_invalidate_draw(pin); @@ -60,7 +60,7 @@ { if (PCB_FLAG_TEST(flag, pad)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_CLEAR(flag, pad); if (AndDraw) pcb_pad_invalidate_draw(pad); @@ -87,7 +87,7 @@ { if (PCB_FLAG_TEST(flag, line)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, line, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(flag, line); if (AndDraw) pcb_rat_invalidate_draw(line); @@ -99,7 +99,7 @@ { if (PCB_FLAG_TEST(flag, line)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, layer, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(flag, line); if (AndDraw) pcb_line_invalidate_draw(layer, line); @@ -111,7 +111,7 @@ { if (PCB_FLAG_TEST(flag, arc)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, layer, arc, arc); + pcb_undo_add_obj_to_flag(arc); PCB_FLAG_CLEAR(flag, arc); if (AndDraw) pcb_arc_invalidate_draw(layer, arc); @@ -123,7 +123,7 @@ { if (PCB_FLAG_TEST(flag, polygon)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, layer, polygon, polygon); + pcb_undo_add_obj_to_flag(polygon); PCB_FLAG_CLEAR(flag, polygon); if (AndDraw) pcb_poly_invalidate_draw(layer, polygon); Index: trunk/src/find_drc.c =================================================================== --- trunk/src/find_drc.c (revision 10981) +++ trunk/src/find_drc.c (revision 10982) @@ -244,7 +244,7 @@ switch (type) { case PCB_TYPE_LINE: if (line->Clearance < 2 * PCB->Bloat) { - pcb_undo_add_obj_to_flag(type, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_SET(TheFlag, line); message = _("Line with insufficient clearance inside polygon\n"); goto doIsBad; @@ -252,7 +252,7 @@ break; case PCB_TYPE_ARC: if (arc->Clearance < 2 * PCB->Bloat) { - pcb_undo_add_obj_to_flag(type, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_SET(TheFlag, arc); message = _("Arc with insufficient clearance inside polygon\n"); goto doIsBad; @@ -261,7 +261,7 @@ case PCB_TYPE_PAD: if (pad->Clearance && pad->Clearance < 2 * PCB->Bloat) if (pcb_is_pad_in_poly(pad, polygon)) { - pcb_undo_add_obj_to_flag(type, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_SET(TheFlag, pad); message = _("Pad with insufficient clearance inside polygon\n"); goto doIsBad; @@ -269,7 +269,7 @@ break; case PCB_TYPE_PIN: if (pin->Clearance && pin->Clearance < 2 * PCB->Bloat) { - pcb_undo_add_obj_to_flag(type, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_SET(TheFlag, pin); message = _("Pin with insufficient clearance inside polygon\n"); goto doIsBad; @@ -277,7 +277,7 @@ break; case PCB_TYPE_VIA: if (pin->Clearance && pin->Clearance < 2 * PCB->Bloat) { - pcb_undo_add_obj_to_flag(type, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_SET(TheFlag, pin); message = _("Via with insufficient clearance inside polygon\n"); goto doIsBad; @@ -289,7 +289,7 @@ return PCB_R_DIR_NOT_FOUND; doIsBad: - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, layer, polygon, polygon); + pcb_undo_add_obj_to_flag(polygon); PCB_FLAG_SET(PCB_FLAG_FOUND, polygon); pcb_poly_invalidate_draw(layer, polygon); pcb_draw_obj(type, ptr1, ptr2); @@ -401,7 +401,7 @@ if (IsBad) break; if (line->Thickness < PCB->minWid) { - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, layer, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_SET(TheFlag, line); pcb_line_invalidate_draw(layer, line); drcerr_count++; @@ -432,7 +432,7 @@ if (IsBad) break; if (arc->Thickness < PCB->minWid) { - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, layer, arc, arc); + pcb_undo_add_obj_to_flag(arc); PCB_FLAG_SET(TheFlag, arc); pcb_arc_invalidate_draw(layer, arc); drcerr_count++; @@ -463,7 +463,7 @@ if (IsBad) break; if (!PCB_FLAG_TEST(PCB_FLAG_HOLE, pin) && pin->Thickness - pin->DrillingHole < 2 * PCB->minRing) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_SET(TheFlag, pin); pcb_pin_invalidate_draw(pin); drcerr_count++; @@ -486,7 +486,7 @@ pcb_undo(pcb_false); } if (pin->DrillingHole < PCB->minDrill) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_SET(TheFlag, pin); pcb_pin_invalidate_draw(pin); drcerr_count++; @@ -517,7 +517,7 @@ if (IsBad) break; if (pad->Thickness < PCB->minWid) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_SET(TheFlag, pad); pcb_pad_invalidate_draw(pad); drcerr_count++; @@ -548,7 +548,7 @@ if (IsBad) break; if (!PCB_FLAG_TEST(PCB_FLAG_HOLE, via) && via->Thickness - via->DrillingHole < 2 * PCB->minRing) { - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_SET(TheFlag, via); pcb_via_invalidate_draw(via); drcerr_count++; @@ -571,7 +571,7 @@ pcb_undo(pcb_false); } if (via->DrillingHole < PCB->minDrill) { - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_SET(TheFlag, via); pcb_via_invalidate_draw(via); drcerr_count++; Index: trunk/src/find_lookup.c =================================================================== --- trunk/src/find_lookup.c (revision 10981) +++ trunk/src/find_lookup.c (revision 10982) @@ -50,7 +50,7 @@ static pcb_bool ADD_PV_TO_LIST(pcb_pin_t *Pin, int from_type, void *from_ptr, pcb_found_conn_type_t type) { if (User) - pcb_undo_add_obj_to_flag(Pin->Element ? PCB_TYPE_PIN : PCB_TYPE_VIA, Pin->Element ? Pin->Element : Pin, Pin, Pin); + pcb_undo_add_obj_to_flag(Pin); PCB_FLAG_SET(TheFlag, Pin); make_callback(PCB_TYPE_PIN, Pin, from_type, from_ptr, type); PVLIST_ENTRY(PVList.Number) = Pin; @@ -71,7 +71,7 @@ /*fprintf(stderr, "ADD_PAD_TO_LIST cardinal %d %p %d\n", L, Pad, from_type);*/ if (User) - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, Pad->Element, Pad, Pad); + pcb_undo_add_obj_to_flag(Pad); PCB_FLAG_SET(TheFlag, Pad); make_callback(PCB_TYPE_PAD, Pad, from_type, from_ptr, type); PADLIST_ENTRY((L), PadList[(L)].Number) = Pad; @@ -90,7 +90,7 @@ if (LineList[L].Data == NULL) return pcb_false; if (User) - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, LAYER_PTR(L), (Ptr), (Ptr)); + pcb_undo_add_obj_to_flag(Ptr); PCB_FLAG_SET(TheFlag, (Ptr)); make_callback(PCB_TYPE_LINE, Ptr, from_type, from_ptr, type); LINELIST_ENTRY((L), LineList[(L)].Number) = (Ptr); @@ -110,7 +110,7 @@ return pcb_false; if (User) - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, LAYER_PTR(L), (Ptr), (Ptr)); + pcb_undo_add_obj_to_flag(Ptr); PCB_FLAG_SET(TheFlag, (Ptr)); make_callback(PCB_TYPE_ARC, Ptr, from_type, from_ptr, type); ARCLIST_ENTRY((L), ArcList[(L)].Number) = (Ptr); @@ -127,7 +127,7 @@ static pcb_bool ADD_RAT_TO_LIST(pcb_rat_t *Ptr, int from_type, void *from_ptr, pcb_found_conn_type_t type) { if (User) - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, (Ptr), (Ptr), (Ptr)); + pcb_undo_add_obj_to_flag(Ptr); PCB_FLAG_SET(TheFlag, (Ptr)); make_callback(PCB_TYPE_RATLINE, Ptr, from_type, from_ptr, type); RATLIST_ENTRY(RatList.Number) = (Ptr); @@ -147,7 +147,7 @@ return pcb_false; if (User) - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, LAYER_PTR(L), (Ptr), (Ptr)); + pcb_undo_add_obj_to_flag(Ptr); PCB_FLAG_SET(TheFlag, (Ptr)); make_callback(PCB_TYPE_POLYGON, Ptr, from_type, from_ptr, type); POLYGONLIST_ENTRY((L), PolygonList[(L)].Number) = (Ptr); Index: trunk/src/find_misc.c =================================================================== --- trunk/src/find_misc.c (revision 10981) +++ trunk/src/find_misc.c (revision 10982) @@ -286,6 +286,11 @@ case PCB_OBJ_VIA: return PCB_TYPE_VIA; case PCB_OBJ_ELEMENT: return PCB_TYPE_ELEMENT; case PCB_OBJ_SUBC: return PCB_TYPE_SUBC; + + case PCB_OBJ_ELINE: return PCB_TYPE_ELEMENT_LINE; + case PCB_OBJ_ETEXT: return PCB_TYPE_ELEMENT_NAME; + case PCB_OBJ_EARC: return PCB_TYPE_ELEMENT_ARC; + default: return 0; } return 0; @@ -350,7 +355,7 @@ { if (PCB_FLAG_TEST(TheFlag, via)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_CLEAR(TheFlag, via); if (AndDraw) pcb_via_invalidate_draw(via); @@ -364,7 +369,7 @@ { if (PCB_FLAG_TEST(TheFlag, pin)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_CLEAR(TheFlag, pin); if (AndDraw) pcb_pin_invalidate_draw(pin); @@ -376,7 +381,7 @@ { if (PCB_FLAG_TEST(TheFlag, pad)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_CLEAR(TheFlag, pad); if (AndDraw) pcb_pad_invalidate_draw(pad); @@ -409,7 +414,7 @@ { if (PCB_FLAG_TEST(TheFlag, line)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, line, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(TheFlag, line); if (AndDraw) pcb_rat_invalidate_draw(line); @@ -421,7 +426,7 @@ { if (PCB_FLAG_TEST(TheFlag, line)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, layer, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(TheFlag, line); if (AndDraw) pcb_line_invalidate_draw(layer, line); @@ -433,7 +438,7 @@ { if (PCB_FLAG_TEST(TheFlag, arc)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, layer, arc, arc); + pcb_undo_add_obj_to_flag(arc); PCB_FLAG_CLEAR(TheFlag, arc); if (AndDraw) pcb_arc_invalidate_draw(layer, arc); @@ -445,7 +450,7 @@ { if (PCB_FLAG_TEST(TheFlag, polygon)) { if (AndDraw) - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, layer, polygon, polygon); + pcb_undo_add_obj_to_flag(polygon); PCB_FLAG_CLEAR(TheFlag, polygon); if (AndDraw) pcb_poly_invalidate_draw(layer, polygon); Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 10981) +++ trunk/src/gui_act.c (revision 10982) @@ -467,7 +467,7 @@ pcb_pin_name_invalidate_erase(pin); else pcb_pin_name_invalidate_draw(pin); - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, ptr1, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_TOGGLE(PCB_FLAG_TERMNAME, pin); } PCB_END_LOOP; @@ -477,7 +477,7 @@ pcb_pad_name_invalidate_erase(pad); else pcb_pad_name_invalidate_draw(pad); - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, ptr1, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_TOGGLE(PCB_FLAG_TERMNAME, pad); } PCB_END_LOOP; @@ -491,7 +491,7 @@ pcb_pin_name_invalidate_erase((pcb_pin_t *) ptr2); else pcb_pin_name_invalidate_draw((pcb_pin_t *) ptr2); - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, ptr1, ptr2, ptr3); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_TERMNAME, (pcb_pin_t *) ptr2); pcb_board_set_changed_flag(pcb_true); pcb_undo_inc_serial(); @@ -503,7 +503,7 @@ pcb_pad_name_invalidate_erase((pcb_pad_t *) ptr2); else pcb_pad_name_invalidate_draw((pcb_pad_t *) ptr2); - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, ptr1, ptr2, ptr3); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_TERMNAME, (pcb_pad_t *) ptr2); pcb_board_set_changed_flag(pcb_true); pcb_undo_inc_serial(); @@ -514,7 +514,7 @@ pcb_via_name_invalidate_erase((pcb_pin_t *) ptr2); else pcb_via_name_invalidate_draw((pcb_pin_t *) ptr2); - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, ptr1, ptr2, ptr3); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_TERMNAME, (pcb_pin_t *) ptr2); pcb_board_set_changed_flag(pcb_true); pcb_undo_inc_serial(); @@ -543,7 +543,7 @@ return 0; /* nothing else can have a displayed name */ } - pcb_undo_add_obj_to_flag(type, ptr1, ptr2, ptr3); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_TERMNAME, obj); pcb_board_set_changed_flag(pcb_true); pcb_undo_inc_serial(); @@ -971,7 +971,7 @@ 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); + pcb_undo_add_obj_to_flag(ptr2); pcb_elem_name_invalidate_erase((pcb_element_t *) ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_HIDENAME, (pcb_element_t *) ptr2); pcb_elem_name_invalidate_draw((pcb_element_t *) ptr2); @@ -988,7 +988,7 @@ { 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); + pcb_undo_add_obj_to_flag(element); pcb_elem_name_invalidate_erase(element); PCB_FLAG_TOGGLE(PCB_FLAG_HIDENAME, element); pcb_elem_name_invalidate_draw(element); Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 10981) +++ trunk/src/obj_arc.c (revision 10982) @@ -486,7 +486,7 @@ pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_ARC, Layer, Arc); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_ARC, Layer, Arc, Arc, pcb_false); } - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, Layer, Arc, Arc); + pcb_undo_add_obj_to_flag(Arc); PCB_FLAG_TOGGLE(PCB_FLAG_CLEARLINE, Arc); if (PCB_FLAG_TEST(PCB_FLAG_CLEARLINE, Arc)) { pcb_poly_clear_from_poly(PCB->Data, PCB_TYPE_ARC, Layer, Arc); @@ -731,7 +731,7 @@ { if ((ctx->chgflag.flag & PCB_ARC_FLAGS) != ctx->chgflag.flag) return NULL; - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, Arc, Arc, Arc); + pcb_undo_add_obj_to_flag(Arc); PCB_FLAG_CHANGE(ctx->chgflag.how, ctx->chgflag.flag, Arc); return Arc; } Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 10981) +++ trunk/src/obj_line.c (revision 10982) @@ -409,7 +409,7 @@ pcb_undo_add_obj_to_clear_poly(PCB_TYPE_LINE, Layer, Line, Line, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_LINE, Layer, Line); } - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, Layer, Line, Line); + pcb_undo_add_obj_to_flag(Line); PCB_FLAG_TOGGLE(PCB_FLAG_CLEARLINE, Line); if (PCB_FLAG_TEST(PCB_FLAG_CLEARLINE, Line)) { pcb_undo_add_obj_to_clear_poly(PCB_TYPE_LINE, Layer, Line, Line, pcb_true); @@ -876,7 +876,7 @@ { if ((ctx->chgflag.flag & PCB_LINE_FLAGS) != ctx->chgflag.flag) return NULL; - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, Line, Line, Line); + pcb_undo_add_obj_to_flag(Line); PCB_FLAG_CHANGE(ctx->chgflag.how, ctx->chgflag.flag, Line); return Line; } Index: trunk/src/obj_pad.c =================================================================== --- trunk/src/obj_pad.c (revision 10981) +++ trunk/src/obj_pad.c (revision 10982) @@ -209,7 +209,7 @@ if (PCB_FLAG_TEST(PCB_FLAG_LOCK, Pad)) return (pcb_false); pcb_pad_invalidate_erase(Pad); - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, Pad, Pad, Pad); + pcb_undo_add_obj_to_flag(Pad); PCB_FLAG_TOGGLE(PCB_FLAG_NOPASTE, Pad); pcb_pad_invalidate_draw(Pad); pcb_draw(); @@ -351,7 +351,7 @@ pcb_pad_invalidate_erase(Pad); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_PAD, Element, Pad, Pad, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_PAD, Element, Pad); - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, Element, Pad, Pad); + pcb_undo_add_obj_to_flag(Pad); PCB_FLAG_TOGGLE(PCB_FLAG_SQUARE, Pad); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_PAD, Element, Pad, Pad, pcb_true); pcb_poly_clear_from_poly(PCB->Data, PCB_TYPE_PAD, Element, Pad); Index: trunk/src/obj_pinvia.c =================================================================== --- trunk/src/obj_pinvia.c (revision 10981) +++ trunk/src/obj_pinvia.c (revision 10982) @@ -382,7 +382,7 @@ { pcb_undo_add_obj_to_clear_poly(PCB_TYPE_VIA, Via, Via, Via, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_VIA, CURRENT, Via); - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, Via, Via, Via); + pcb_undo_add_obj_to_flag(Via); if (!ctx->chgtherm.style) /* remove the thermals */ PCB_FLAG_THERM_CLEAR(INDEXOFCURRENT, Via); else @@ -398,7 +398,7 @@ { pcb_undo_add_obj_to_clear_poly(PCB_TYPE_PIN, element, Pin, Pin, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_VIA, CURRENT, Pin); - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, Pin, Pin); + pcb_undo_add_obj_to_flag(Pin); if (!ctx->chgtherm.style) /* remove the thermals */ PCB_FLAG_THERM_CLEAR(INDEXOFCURRENT, Pin); else @@ -626,7 +626,7 @@ pcb_via_invalidate_erase(Via); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_VIA, NULL, Via, Via, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_VIA, NULL, Via); - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, NULL, Via, Via); + pcb_undo_add_obj_to_flag(Via); PCB_FLAG_SQUARE_ASSIGN(ctx->chgsize.value, Via); if (ctx->chgsize.value == 0) PCB_FLAG_CLEAR(PCB_FLAG_SQUARE, Via); @@ -647,7 +647,7 @@ pcb_pin_invalidate_erase(Pin); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_PIN, Element, Pin, Pin, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_PIN, Element, Pin); - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, Element, Pin, Pin); + pcb_undo_add_obj_to_flag(Pin); PCB_FLAG_SQUARE_ASSIGN(ctx->chgsize.value, Pin); if (ctx->chgsize.value == 0) PCB_FLAG_CLEAR(PCB_FLAG_SQUARE, Pin); @@ -686,7 +686,7 @@ pcb_via_invalidate_erase(Via); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_VIA, Via, Via, Via, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_VIA, Via, Via); - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, Via, Via, Via); + pcb_undo_add_obj_to_flag(Via); PCB_FLAG_TOGGLE(PCB_FLAG_OCTAGON, Via); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_VIA, Via, Via, Via, pcb_true); pcb_poly_clear_from_poly(PCB->Data, PCB_TYPE_VIA, Via, Via); @@ -720,7 +720,7 @@ pcb_pin_invalidate_erase(Pin); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_PIN, Element, Pin, Pin, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_PIN, Element, Pin); - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, Element, Pin, Pin); + pcb_undo_add_obj_to_flag(Pin); PCB_FLAG_TOGGLE(PCB_FLAG_OCTAGON, Pin); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_PIN, Element, Pin, Pin, pcb_true); pcb_poly_clear_from_poly(PCB->Data, PCB_TYPE_PIN, Element, Pin); @@ -752,7 +752,7 @@ if (PCB_FLAG_TEST(PCB_FLAG_LOCK, Via)) return (pcb_false); pcb_via_invalidate_erase(Via); - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, Via, Via, Via); + pcb_undo_add_obj_to_flag(Via); pcb_undo_add_obj_to_mask_size(PCB_TYPE_VIA, Via, Via, Via); pcb_r_delete_entry(PCB->Data->via_tree, (pcb_box_t *) Via); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_VIA, Via, Via); @@ -901,7 +901,7 @@ { if ((ctx->chgflag.flag & PCB_PIN_FLAGS) != ctx->chgflag.flag) return NULL; - pcb_undo_add_obj_to_flag(PCB_FLAG_TEST(PCB_FLAG_PIN, pin) ? PCB_TYPE_PIN : PCB_TYPE_VIA, pin, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_CHANGE(ctx->chgflag.how, ctx->chgflag.flag, pin); return pin; } Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 10981) +++ trunk/src/obj_poly.c (revision 10982) @@ -409,7 +409,7 @@ if (PCB_FLAG_TEST(PCB_FLAG_LOCK, Polygon)) return (NULL); pcb_undo_add_obj_to_clear_poly(PCB_TYPE_POLYGON, Layer, Polygon, Polygon, pcb_true); - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, Layer, Polygon, Polygon); + pcb_undo_add_obj_to_flag(Polygon); PCB_FLAG_TOGGLE(PCB_FLAG_CLEARPOLY, Polygon); pcb_poly_init_clip(PCB->Data, Layer, Polygon); pcb_poly_invalidate_draw(Layer, Polygon); @@ -538,9 +538,9 @@ if (!PCB_FLAG_THERM_TEST(d->snum, pin) || !pcb_poly_is_point_in_p(pin->X, pin->Y, pin->Thickness + pin->Clearance + 2, d->polygon)) return PCB_R_DIR_NOT_FOUND; if (d->type == PCB_TYPE_PIN) - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, pin->Element, pin, pin); + pcb_undo_add_obj_to_flag(pin); else - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, pin, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_THERM_ASSIGN(d->dnum, PCB_FLAG_THERM_GET(d->snum, pin), pin); PCB_FLAG_THERM_CLEAR(d->snum, pin); return PCB_R_DIR_FOUND_CONTINUE; @@ -778,7 +778,7 @@ { if ((ctx->chgflag.flag & PCB_POLY_FLAGS) != ctx->chgflag.flag) return NULL; - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, Polygon, Polygon, Polygon); + pcb_undo_add_obj_to_flag(Polygon); PCB_FLAG_CHANGE(ctx->chgflag.how, ctx->chgflag.flag, Polygon); return Polygon; } Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 10981) +++ trunk/src/obj_subc.c (revision 10982) @@ -869,7 +869,7 @@ { pcb_opctx_t ctx; - pcb_undo_add_obj_to_flag(PCB_TYPE_SUBC, sc, sc, sc); + pcb_undo_add_obj_to_flag(sc); ctx.chgflag.pcb = pcb; ctx.chgflag.how = how; Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 10981) +++ trunk/src/obj_text.c (revision 10982) @@ -356,7 +356,7 @@ pcb_undo_add_obj_to_clear_poly(PCB_TYPE_TEXT, Layer, Text, Text, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_TEXT, Layer, Text); } - pcb_undo_add_obj_to_flag(PCB_TYPE_TEXT, Layer, Text, Text); + pcb_undo_add_obj_to_flag(Text); PCB_FLAG_TOGGLE(PCB_FLAG_CLEARLINE, Text); if (PCB_FLAG_TEST(PCB_FLAG_CLEARLINE, Text)) { pcb_undo_add_obj_to_clear_poly(PCB_TYPE_TEXT, Layer, Text, Text, pcb_true); @@ -561,7 +561,7 @@ { if ((ctx->chgflag.flag & PCB_TEXT_FLAGS) != ctx->chgflag.flag) return NULL; - pcb_undo_add_obj_to_flag(PCB_TYPE_TEXT, Text, Text, Text); + pcb_undo_add_obj_to_flag(Text); PCB_FLAG_CHANGE(ctx->chgflag.how, ctx->chgflag.flag, Text); return Text; } Index: trunk/src/operation.c =================================================================== --- trunk/src/operation.c (revision 10981) +++ trunk/src/operation.c (revision 10982) @@ -129,7 +129,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, line)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, layer, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, line); } F->Line(ctx, layer, line); @@ -145,7 +145,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, arc)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, layer, arc, arc); + pcb_undo_add_obj_to_flag(arc); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, arc); } F->Arc(ctx, layer, arc); @@ -161,7 +161,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, text) && pcb_text_is_visible(PCB, layer, text)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_TEXT, layer, text, text); + pcb_undo_add_obj_to_flag(text); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, text); } F->Text(ctx, layer, text); @@ -177,7 +177,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, polygon)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, layer, polygon, polygon); + pcb_undo_add_obj_to_flag(polygon); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, polygon); } F->Polygon(ctx, layer, polygon); @@ -192,7 +192,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, subc)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_SUBC, subc, subc, subc); + pcb_undo_add_obj_to_flag(subc); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, subc); } F->subc(ctx, subc); @@ -209,7 +209,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, element)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT, element, element, element); + pcb_undo_add_obj_to_flag(element); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, element); } F->Element(ctx, element); @@ -224,7 +224,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, &PCB_ELEM_TEXT_VISIBLE(PCB, element))) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT_NAME, element, &PCB_ELEM_TEXT_VISIBLE(PCB, element), &PCB_ELEM_TEXT_VISIBLE(PCB, element)); + pcb_undo_add_obj_to_flag(&PCB_ELEM_TEXT_VISIBLE(PCB, element)); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, &PCB_ELEM_TEXT_VISIBLE(PCB, element)); } F->ElementName(ctx, element); @@ -241,7 +241,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, pin)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, pin); } F->Pin(ctx, element, pin); @@ -260,7 +260,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, pad)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, pad); } F->Pad(ctx, element, pad); @@ -278,7 +278,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, via)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, via); } F->Via(ctx, via); @@ -294,7 +294,7 @@ { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, line)) { if (Reset) { - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, line, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, line); } F->Rat(ctx, line); Index: trunk/src/rats_act.c =================================================================== --- trunk/src/rats_act.c (revision 10981) +++ trunk/src/rats_act.c (revision 10982) @@ -102,7 +102,7 @@ } PCB_END_LOOP; if (shorty) { - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, shorty, shorty, shorty); + pcb_undo_add_obj_to_flag(shorty); PCB_FLAG_SET(PCB_FLAG_SELECTED, shorty); pcb_rat_invalidate_draw(shorty); pcb_draw(); Index: trunk/src/select.c =================================================================== --- trunk/src/select.c (revision 10981) +++ trunk/src/select.c (revision 10982) @@ -58,23 +58,23 @@ /* select all pins and names of the element */ PCB_PIN_LOOP(element); { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_CHANGE(how, PCB_FLAG_SELECTED, pin); } PCB_END_LOOP; PCB_PAD_LOOP(element); { - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_CHANGE(how, PCB_FLAG_SELECTED, pad); } PCB_END_LOOP; PCB_ELEMENT_PCB_TEXT_LOOP(element); { - pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT_NAME, element, text, text); + pcb_undo_add_obj_to_flag(text); PCB_FLAG_CHANGE(how, PCB_FLAG_SELECTED, text); } PCB_END_LOOP; - pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT, element, element, element); + pcb_undo_add_obj_to_flag(element); PCB_FLAG_CHANGE(how, PCB_FLAG_SELECTED, element); if (redraw) { @@ -93,7 +93,7 @@ /* select all names of the element */ PCB_ELEMENT_PCB_TEXT_LOOP(element); { - pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT_NAME, element, text, text); + pcb_undo_add_obj_to_flag(text); PCB_FLAG_CHANGE(how, PCB_FLAG_SELECTED, text); } PCB_END_LOOP; @@ -120,7 +120,7 @@ return (pcb_false); switch (type) { case PCB_TYPE_VIA: - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, ptr1, ptr1, ptr1); + pcb_undo_add_obj_to_flag(ptr1); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, (pcb_pin_t *) ptr1); pcb_via_invalidate_draw((pcb_pin_t *) ptr1); break; @@ -130,7 +130,7 @@ pcb_line_t *line = (pcb_line_t *) ptr2; layer = (pcb_layer_t *) ptr1; - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, line); pcb_line_invalidate_draw(layer, line); break; @@ -140,7 +140,7 @@ { pcb_rat_t *rat = (pcb_rat_t *) ptr2; - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, ptr1, ptr1, ptr1); + pcb_undo_add_obj_to_flag(ptr1); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, rat); pcb_rat_invalidate_draw(rat); break; @@ -151,7 +151,7 @@ pcb_arc_t *arc = (pcb_arc_t *) ptr2; layer = (pcb_layer_t *) ptr1; - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, arc); pcb_arc_invalidate_draw(layer, arc); break; @@ -162,7 +162,7 @@ pcb_text_t *text = (pcb_text_t *) ptr2; layer = (pcb_layer_t *) ptr1; - pcb_undo_add_obj_to_flag(PCB_TYPE_TEXT, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, text); pcb_text_invalidate_draw(layer, text); break; @@ -173,7 +173,7 @@ pcb_polygon_t *poly = (pcb_polygon_t *) ptr2; layer = (pcb_layer_t *) ptr1; - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, poly); pcb_poly_invalidate_draw(layer, poly); /* changing memory order no longer effects draw order */ @@ -181,13 +181,13 @@ } case PCB_TYPE_PIN: - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, (pcb_pin_t *) ptr2); pcb_pin_invalidate_draw((pcb_pin_t *) ptr2); break; case PCB_TYPE_PAD: - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, ptr1, ptr2, ptr2); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, (pcb_pad_t *) ptr2); pcb_pad_invalidate_draw((pcb_pad_t *) ptr2); break; @@ -269,7 +269,7 @@ #define append(undo_type, p1, obj) \ do { \ if (len == NULL) { \ - pcb_undo_add_obj_to_flag(undo_type, p1, obj, obj); \ + pcb_undo_add_obj_to_flag(obj); \ PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, obj); \ } \ else { \ @@ -527,7 +527,7 @@ PCB_RAT_LOOP(pcb->Data); { if (PCB_FLAG_TEST(PCB_FLAG_FOUND, line)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, line, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, line); pcb_rat_invalidate_draw(line); changed = pcb_true; @@ -538,7 +538,7 @@ PCB_LINE_VISIBLE_LOOP(pcb->Data); { if (PCB_FLAG_TEST(PCB_FLAG_FOUND, line) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, line)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, layer, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, line); pcb_line_invalidate_draw(layer, line); changed = pcb_true; @@ -548,7 +548,7 @@ PCB_ARC_VISIBLE_LOOP(pcb->Data); { if (PCB_FLAG_TEST(PCB_FLAG_FOUND, arc) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, arc)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, layer, arc, arc); + pcb_undo_add_obj_to_flag(arc); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, arc); pcb_arc_invalidate_draw(layer, arc); changed = pcb_true; @@ -558,7 +558,7 @@ PCB_POLY_VISIBLE_LOOP(pcb->Data); { if (PCB_FLAG_TEST(PCB_FLAG_FOUND, polygon) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, polygon)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, layer, polygon, polygon); + pcb_undo_add_obj_to_flag(polygon); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, polygon); pcb_poly_invalidate_draw(layer, polygon); changed = pcb_true; @@ -570,7 +570,7 @@ PCB_PIN_ALL_LOOP(pcb->Data); { if (!PCB_FLAG_TEST(PCB_FLAG_LOCK, element) && PCB_FLAG_TEST(PCB_FLAG_FOUND, pin)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, pin); pcb_pin_invalidate_draw(pin); changed = pcb_true; @@ -580,7 +580,7 @@ PCB_PAD_ALL_LOOP(pcb->Data); { if (!PCB_FLAG_TEST(PCB_FLAG_LOCK, element) && PCB_FLAG_TEST(PCB_FLAG_FOUND, pad)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, pad); pcb_pad_invalidate_draw(pad); changed = pcb_true; @@ -593,7 +593,7 @@ PCB_VIA_LOOP(pcb->Data); { if (PCB_FLAG_TEST(PCB_FLAG_FOUND, via) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, via)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, via); pcb_via_invalidate_draw(via); changed = pcb_true; @@ -687,7 +687,7 @@ && pcb_text_is_visible(PCB, layer, text) && text->TextString && REGEXEC(text->TextString) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, text) != Flag) { - pcb_undo_add_obj_to_flag(PCB_TYPE_TEXT, layer, text, text); + pcb_undo_add_obj_to_flag(text); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, text); pcb_text_invalidate_draw(layer, text); changed = pcb_true; @@ -703,23 +703,23 @@ && PCB_FLAG_TEST(PCB_FLAG_SELECTED, element) != Flag) { const char* name = PCB_ELEM_NAME_VISIBLE(PCB, element); if (name && REGEXEC(name)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT, element, element, element); + pcb_undo_add_obj_to_flag(element); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, element); PCB_PIN_LOOP(element); { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, pin); } PCB_END_LOOP; PCB_PAD_LOOP(element); { - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, pad); } PCB_END_LOOP; PCB_ELEMENT_PCB_TEXT_LOOP(element); { - pcb_undo_add_obj_to_flag(PCB_TYPE_ELEMENT_NAME, element, text, text); + pcb_undo_add_obj_to_flag(text); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, text); } PCB_END_LOOP; @@ -736,7 +736,7 @@ if (!PCB_FLAG_TEST(PCB_FLAG_LOCK, element) && pin->Name && REGEXEC(pin->Name) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, pin) != Flag) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, pin); pcb_pin_invalidate_draw(pin); changed = pcb_true; @@ -750,7 +750,7 @@ && ((PCB_FLAG_TEST(PCB_FLAG_ONSOLDER, pad) != 0) == PCB_SWAP_IDENT || pcb->InvisibleObjectsOn) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, pad) != Flag) if (pad->Name && REGEXEC(pad->Name)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, pad); pcb_pad_invalidate_draw(pad); changed = pcb_true; @@ -762,7 +762,7 @@ { if (!PCB_FLAG_TEST(PCB_FLAG_LOCK, via) && via->Name && REGEXEC(via->Name) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, via) != Flag) { - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, Flag, via); pcb_via_invalidate_draw(via); changed = pcb_true; Index: trunk/src/undo_old.c =================================================================== --- trunk/src/undo_old.c (revision 10981) +++ trunk/src/undo_old.c (revision 10982) @@ -1122,13 +1122,14 @@ /* --------------------------------------------------------------------------- * adds an object to the list of objects with flags changed */ -void pcb_undo_add_obj_to_flag(int Type, void *Ptr1, void *Ptr2, void *Ptr3) +void pcb_undo_add_obj_to_flag(void *obj_) { UndoListTypePtr undo; + pcb_any_obj_t *obj = obj_; if (!Locked) { - undo = GetUndoSlot(PCB_UNDO_FLAG, PCB_OBJECT_ID(Ptr2), Type); - undo->Data.Flags = ((pcb_pin_t *) Ptr2)->Flags; + undo = GetUndoSlot(PCB_UNDO_FLAG, PCB_OBJECT_ID(obj), pcb_obj_type2oldtype(obj->type)); + undo->Data.Flags = obj->Flags; } } Index: trunk/src/undo_old.h =================================================================== --- trunk/src/undo_old.h (revision 10981) +++ trunk/src/undo_old.h (revision 10982) @@ -49,7 +49,7 @@ void pcb_undo_add_obj_to_mirror(int, void *, void *, void *, pcb_coord_t); void pcb_undo_add_subc_to_otherside(int Type, void *Ptr1, void *Ptr2, void *Ptr3, pcb_coord_t yoff); void pcb_undo_add_obj_to_move_to_layer(int, void *, void *, void *); -void pcb_undo_add_obj_to_flag(int, void *, void *, void *); +void pcb_undo_add_obj_to_flag(void *obj); void pcb_undo_add_obj_to_size(int, void *, void *, void *); void pcb_undo_add_obj_to_2nd_size(int, void *, void *, void *); void pcb_undo_add_obj_to_clear_size(int, void *, void *, void *); Index: trunk/src_plugins/autoroute/autoroute.c =================================================================== --- trunk/src_plugins/autoroute/autoroute.c (revision 10981) +++ trunk/src_plugins/autoroute/autoroute.c (revision 10982) @@ -4537,7 +4537,7 @@ if (pin) { pcb_undo_add_obj_to_clear_poly(type, pin->Element ? pin->Element : pin, pin, pin, pcb_false); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_VIA, LAYER_PTR(p->layer), pin); - pcb_undo_add_obj_to_flag(type, pin->Element ? pin->Element : pin, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_THERM_ASSIGN(p->layer, PCB->ThermStyle, pin); pcb_undo_add_obj_to_clear_poly(type, pin->Element ? pin->Element : pin, pin, pin, pcb_true); pcb_poly_clear_from_poly(PCB->Data, PCB_TYPE_VIA, LAYER_PTR(p->layer), pin); @@ -4666,7 +4666,7 @@ b = FindRouteBoxOnLayerGroup(rd, line->Point2.X, line->Point2.Y, line->group2); if (!a || !b) { #ifdef DEBUG_STALE_RATS - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, line, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_ASSIGN(PCB_FLAG_SELECTED, pcb_true, line); pcb_rat_invalidate_draw(line, 0); #endif /* DEBUG_STALE_RATS */ Index: trunk/src_plugins/lib_gtk_common/dlg_drc.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_drc.c (revision 10981) +++ trunk/src_plugins/lib_gtk_common/dlg_drc.c (revision 10982) @@ -107,7 +107,7 @@ PCB_VIA_LOOP(PCB->Data); { if (PCB_FLAG_TEST(flag, via)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_VIA, via, via, via); + pcb_undo_add_obj_to_flag(via); PCB_FLAG_CLEAR(flag, via); pcb_via_invalidate_draw(via); change = pcb_true; @@ -119,7 +119,7 @@ PCB_PIN_LOOP(element); { if (PCB_FLAG_TEST(flag, pin)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PIN, element, pin, pin); + pcb_undo_add_obj_to_flag(pin); PCB_FLAG_CLEAR(flag, pin); pcb_pin_invalidate_draw(pin); change = pcb_true; @@ -129,7 +129,7 @@ PCB_PAD_LOOP(element); { if (PCB_FLAG_TEST(flag, pad)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_PAD, element, pad, pad); + pcb_undo_add_obj_to_flag(pad); PCB_FLAG_CLEAR(flag, pad); pcb_pad_invalidate_draw(pad); change = pcb_true; @@ -141,7 +141,7 @@ PCB_RAT_LOOP(PCB->Data); { if (PCB_FLAG_TEST(flag, line)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_RATLINE, line, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(flag, line); pcb_rat_invalidate_draw(line); change = pcb_true; @@ -151,7 +151,7 @@ PCB_LINE_COPPER_LOOP(PCB->Data); { if (PCB_FLAG_TEST(flag, line)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_LINE, layer, line, line); + pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(flag, line); pcb_line_invalidate_draw(layer, line); change = pcb_true; @@ -161,7 +161,7 @@ PCB_ARC_COPPER_LOOP(PCB->Data); { if (PCB_FLAG_TEST(flag, arc)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_ARC, layer, arc, arc); + pcb_undo_add_obj_to_flag(arc); PCB_FLAG_CLEAR(flag, arc); pcb_arc_invalidate_draw(layer, arc); change = pcb_true; @@ -171,7 +171,7 @@ PCB_POLY_COPPER_LOOP(PCB->Data); { if (PCB_FLAG_TEST(flag, polygon)) { - pcb_undo_add_obj_to_flag(PCB_TYPE_POLYGON, layer, polygon, polygon); + pcb_undo_add_obj_to_flag(polygon); PCB_FLAG_CLEAR(flag, polygon); pcb_poly_invalidate_draw(layer, polygon); change = pcb_true; @@ -222,7 +222,7 @@ pcb_message(PCB_MSG_WARNING, _("Object ID %i identified during DRC was not found. Stale DRC window?\n"), object_id); continue; } - pcb_undo_add_obj_to_flag(object_type, ptr1, ptr2, ptr3); + pcb_undo_add_obj_to_flag(ptr2); PCB_FLAG_SET(PCB_FLAG_FOUND, (pcb_any_obj_t *) ptr2); switch (violation->object_type_list[i]) { case PCB_TYPE_LINE: Index: trunk/src_plugins/lib_gtk_common/dlg_netlist.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_netlist.c (revision 10981) +++ trunk/src_plugins/lib_gtk_common/dlg_netlist.c (revision 10982) @@ -218,7 +218,7 @@ type = conn.obj->type == PCB_OBJ_PAD ? PCB_TYPE_PAD : PCB_TYPE_PIN; - pcb_undo_add_obj_to_flag(type, conn.ptr1, conn.obj, conn.obj); + pcb_undo_add_obj_to_flag(conn.obj); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, conn.obj); pcb_draw_obj(type, conn.ptr1, conn.obj); }