Index: undo_old.c =================================================================== --- undo_old.c (revision 24471) +++ undo_old.c (revision 24472) @@ -412,6 +412,7 @@ int type; pcb_flag_t swap; int must_redraw; + unsigned long oldflg; /* lookup entry by ID */ type = pcb_search_obj_by_id(PCB->Data, &ptr1, &ptr2, &ptr3, Entry->ID, Entry->Kind); @@ -432,14 +433,16 @@ if (pcb_undo_and_draw && must_redraw && (ptr1e != NULL)) pcb_erase_obj(type, ptr1e, ptr2); - if (obj->type == PCB_OBJ_TEXT) + if (obj->type == PCB_OBJ_TEXT) { + oldflg = obj->Flags.f; pcb_text_flagchg_pre((pcb_text_t *)obj, Entry->Data.Flags.f, &txt_save); + } obj->Flags = Entry->Data.Flags; Entry->Data.Flags = swap; if (obj->type == PCB_OBJ_TEXT) - pcb_text_flagchg_post((pcb_text_t *)obj, Entry->Data.Flags.f, &txt_save); + pcb_text_flagchg_post((pcb_text_t *)obj, oldflg, &txt_save); if (pcb_undo_and_draw && must_redraw) pcb_draw_obj((pcb_any_obj_t *)ptr2);