Index: trunk/src/obj_pad.c =================================================================== --- trunk/src/obj_pad.c (revision 15584) +++ trunk/src/obj_pad.c (revision 15585) @@ -272,7 +272,8 @@ return NULL; if (value <= PCB_MAX_PADSIZE && value >= PCB_MIN_PADSIZE && value != Pad->Thickness) { pcb_undo_add_obj_to_size(PCB_TYPE_PAD, Element, Pad, Pad); - pcb_undo_add_obj_to_mask_size(PCB_TYPE_PAD, Element, Pad, Pad); +abort(); +/* pcb_undo_add_obj_to_mask_size(PCB_TYPE_PAD, Element, Pad, Pad);*/ pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_PAD, Element, Pad); pcb_pad_invalidate_erase(Pad); pcb_r_delete_entry(PCB->Data->pad_tree, &Pad->BoundingBox); @@ -394,7 +395,8 @@ if (value == Pad->Mask && ctx->chgsize.value == 0) value = Pad->Thickness; if (value != Pad->Mask) { - pcb_undo_add_obj_to_mask_size(PCB_TYPE_PAD, Element, Pad, Pad); +abort(); +/* pcb_undo_add_obj_to_mask_size(PCB_TYPE_PAD, Element, Pad, Pad);*/ pcb_pad_invalidate_erase(Pad); pcb_r_delete_entry(PCB->Data->pad_tree, &Pad->BoundingBox); Pad->Mask = value; Index: trunk/src/obj_pinvia.c =================================================================== --- trunk/src/obj_pinvia.c (revision 15584) +++ trunk/src/obj_pinvia.c (revision 15585) @@ -420,7 +420,8 @@ pcb_r_delete_entry(PCB->Data->via_tree, (pcb_box_t *) Via); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_PIN, Via, Via); if (Via->Mask) { - pcb_undo_add_obj_to_mask_size(PCB_TYPE_VIA, Via, Via, Via); +abort(); +/* pcb_undo_add_obj_to_mask_size(PCB_TYPE_VIA, Via, Via, Via);*/ Via->Mask += value - Via->Thickness; } Via->Thickness = value; @@ -526,7 +527,8 @@ if (!PCB_FLAG_TEST(PCB_FLAG_HOLE, Pin) && value <= PCB_MAX_PINORVIASIZE && value >= PCB_MIN_PINORVIASIZE && value >= Pin->DrillingHole + PCB_MIN_PINORVIACOPPER && value != Pin->Thickness) { pcb_undo_add_obj_to_size(PCB_TYPE_PIN, Element, Pin, Pin); - pcb_undo_add_obj_to_mask_size(PCB_TYPE_PIN, Element, Pin, Pin); +abort(); +/* pcb_undo_add_obj_to_mask_size(PCB_TYPE_PIN, Element, Pin, Pin);*/ pcb_pin_invalidate_erase(Pin); pcb_r_delete_entry(PCB->Data->pin_tree, &Pin->BoundingBox); pcb_poly_restore_to_poly(PCB->Data, PCB_TYPE_PIN, Element, Pin); @@ -752,7 +754,8 @@ return pcb_false; pcb_via_invalidate_erase(Via); pcb_undo_add_obj_to_flag(Via); - pcb_undo_add_obj_to_mask_size(PCB_TYPE_VIA, Via, Via, Via); +abort(); +/* 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); PCB_FLAG_TOGGLE(PCB_FLAG_HOLE, Via); @@ -788,7 +791,8 @@ if (value == Pin->Mask && ctx->chgsize.value == 0) value = Pin->Thickness; if (value != Pin->Mask) { - pcb_undo_add_obj_to_mask_size(PCB_TYPE_PIN, Element, Pin, Pin); +abort(); +/* pcb_undo_add_obj_to_mask_size(PCB_TYPE_PIN, Element, Pin, Pin);*/ pcb_pin_invalidate_erase(Pin); pcb_r_delete_entry(PCB->Data->pin_tree, &Pin->BoundingBox); Pin->Mask = value; @@ -807,7 +811,8 @@ value = (ctx->chgsize.is_absolute) ? ctx->chgsize.value : Via->Mask + ctx->chgsize.value; value = MAX(value, 0); if (value != Via->Mask) { - pcb_undo_add_obj_to_mask_size(PCB_TYPE_VIA, Via, Via, Via); +abort(); +/* pcb_undo_add_obj_to_mask_size(PCB_TYPE_VIA, Via, Via, Via);*/ pcb_via_invalidate_erase(Via); pcb_r_delete_entry(PCB->Data->via_tree, &Via->BoundingBox); Via->Mask = value; Index: trunk/src/undo_old.c =================================================================== --- trunk/src/undo_old.c (revision 15584) +++ trunk/src/undo_old.c (revision 15585) @@ -326,34 +326,6 @@ } /* --------------------------------------------------------------------------- - * recovers an object from a mask size change operation - */ -static pcb_bool UndoChangeMaskSize(UndoListTypePtr Entry) -{ - void *ptr1, *ptr2, *ptr3; - int type; - pcb_coord_t swap; - - /* lookup entry by ID */ - type = pcb_search_obj_by_id(PCB->Data, &ptr1, &ptr2, &ptr3, Entry->ID, Entry->Kind); - if (type & (PCB_TYPE_VIA | PCB_TYPE_PIN | PCB_TYPE_PAD)) { - swap = (type == PCB_TYPE_PAD ? ((pcb_pad_t *) ptr2)->Mask : ((pcb_pin_t *) ptr2)->Mask); - if (pcb_undo_and_draw) - pcb_erase_obj(type, ptr1, ptr2); - if (type == PCB_TYPE_PAD) - ((pcb_pad_t *) ptr2)->Mask = Entry->Data.Size; - else - ((pcb_pin_t *) ptr2)->Mask = Entry->Data.Size; - Entry->Data.Size = swap; - if (pcb_undo_and_draw) - pcb_draw_obj((pcb_any_obj_t *)ptr2); - return pcb_true; - } - return pcb_false; -} - - -/* --------------------------------------------------------------------------- * recovers an object from a Size change operation */ static pcb_bool UndoChangeSize(UndoListTypePtr Entry) @@ -364,19 +336,15 @@ /* lookup entry by ID */ type = pcb_search_obj_by_id(PCB->Data, &ptr1, &ptr2, &ptr3, Entry->ID, Entry->Kind); - if (type == PCB_TYPE_ELEMENT_NAME) - ptr1e = NULL; - else - ptr1e = ptr1; + ptr1e = ptr1; if (type != PCB_TYPE_NONE) { - /* Wow! can any object be treated as a pin type for size change?? */ - /* pins, vias, lines, and arcs can. Text can't but it has it's own mechanism */ - swap = ((pcb_pin_t *) ptr2)->Thickness; + /* Size change for lines and arcs can. Text has it's own mechanism */ + swap = ((pcb_line_t *) ptr2)->Thickness; pcb_poly_restore_to_poly(PCB->Data, type, ptr1, ptr2); if ((pcb_undo_and_draw) && (ptr1e != NULL)) pcb_erase_obj(type, ptr1e, ptr2); - ((pcb_pin_t *) ptr2)->Thickness = Entry->Data.Size; + ((pcb_line_t *) ptr2)->Thickness = Entry->Data.Size; Entry->Data.Size = swap; pcb_poly_clear_from_poly(PCB->Data, type, ptr1, ptr2); if (pcb_undo_and_draw) @@ -400,17 +368,13 @@ type = pcb_search_obj_by_id(PCB->Data, &ptr1, &ptr2, &ptr3, Entry->ID, Entry->Kind); if (type != PCB_TYPE_NONE) { pcb_flag_t f1, f2; - pcb_pin_t *pin = (pcb_pin_t *) ptr2; + pcb_any_obj_t *obj = (pcb_any_obj_t *)ptr2; - if ((type == PCB_TYPE_ELEMENT) || (type == PCB_TYPE_ELEMENT_NAME)) - ptr1e = NULL; - else - ptr1e = ptr1; + ptr1e = ptr1; + swap = obj->Flags; - swap = pin->Flags; - must_redraw = 0; - f1 = pcb_flag_mask(pin->Flags, ~DRAW_FLAGS); + f1 = pcb_flag_mask(obj->Flags, ~DRAW_FLAGS); f2 = pcb_flag_mask(Entry->Data.Flags, ~DRAW_FLAGS); if (!PCB_FLAG_EQ(f1, f2)) @@ -419,7 +383,7 @@ if (pcb_undo_and_draw && must_redraw && (ptr1e != NULL)) pcb_erase_obj(type, ptr1e, ptr2); - pin->Flags = Entry->Data.Flags; + obj->Flags = Entry->Data.Flags; Entry->Data.Flags = swap; @@ -878,11 +842,6 @@ return 0; break; - case PCB_UNDO_CHANGEMASKSIZE: - if (UndoChangeMaskSize(ptr)) - return 0; - break; - case PCB_UNDO_CHANGEANGLES: if (UndoChangeAngles(ptr)) return 0; @@ -1249,27 +1208,6 @@ } /* --------------------------------------------------------------------------- - * adds an object to the list of objects with Size changes - */ -void pcb_undo_add_obj_to_mask_size(int Type, void *ptr1, void *ptr2, void *ptr3) -{ - UndoListTypePtr undo; - - if (!Locked) { - undo = GetUndoSlot(PCB_UNDO_CHANGEMASKSIZE, PCB_OBJECT_ID(ptr2), Type); - switch (Type) { - case PCB_TYPE_PIN: - case PCB_TYPE_VIA: - undo->Data.Size = ((pcb_pin_t *) ptr2)->Mask; - break; - case PCB_TYPE_PAD: - undo->Data.Size = ((pcb_pad_t *) ptr2)->Mask; - break; - } - } -} - -/* --------------------------------------------------------------------------- * adds an object to the list of changed angles. Note that you must * call this before changing the angles, passing the new start/delta. */ @@ -1400,7 +1338,6 @@ case PCB_UNDO_MIRROR: return "mirror"; case PCB_UNDO_OTHERSIDE: return "otherside"; case PCB_UNDO_CHANGECLEARSIZE: return "chngeclearsize"; - case PCB_UNDO_CHANGEMASKSIZE: return "changemasksize"; case PCB_UNDO_CHANGEANGLES: return "changeangles"; case PCB_UNDO_CHANGERADII: return "changeradii"; case PCB_UNDO_LAYERMOVE: return "layermove"; Index: trunk/src/undo_old.h =================================================================== --- trunk/src/undo_old.h (revision 15584) +++ trunk/src/undo_old.h (revision 15585) @@ -55,7 +55,6 @@ 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_clear_size(int, void *, void *, void *); -void pcb_undo_add_obj_to_mask_size(int, void *, void *, void *); void pcb_undo_add_obj_to_change_angles(int, void *, void *, void *); void pcb_undo_add_obj_to_change_radii(int, void *, void *, void *); void pcb_undo_add_obj_to_clear_poly(int, void *, void *, void *, pcb_bool); @@ -81,7 +80,6 @@ PCB_UNDO_CHANGESIZE = 0x000800, /* change size of object */ PCB_UNDO_MIRROR = 0x002000, /* change side of board */ PCB_UNDO_CHANGECLEARSIZE = 0x004000, /* change clearance size */ - PCB_UNDO_CHANGEMASKSIZE = 0x008000, /* change mask size */ PCB_UNDO_CHANGEANGLES = 0x010000, /* change arc angles */ PCB_UNDO_LAYERMOVE = 0x020000, /* layer new/delete/move */ PCB_UNDO_CLEAR = 0x040000, /* clear/restore to polygons */