libedit: field edition should be undoable
This commit is contained in:
parent
f2257ccccc
commit
72de4e1857
|
@ -107,6 +107,8 @@ void LIB_EDIT_FRAME::GetComponentFromUndoList( wxCommandEvent& event )
|
|||
delete lastcmd;
|
||||
part = (LIB_PART*) wrapper.GetItem();
|
||||
|
||||
printf("RestoreCopy [%p]\n", part);
|
||||
|
||||
// Do not delete the previous part by calling SetCurPart( part ),
|
||||
// which calls delete <previous part>.
|
||||
// <previous part> is now put in redo list and is owned by this list.
|
||||
|
|
|
@ -74,11 +74,13 @@ void LIB_EDIT_FRAME::EditField( LIB_FIELD* aField )
|
|||
newFieldValue = dlg.GetText();
|
||||
wxString fieldText = aField->GetFullText( m_unit );
|
||||
|
||||
bool creatingNewComponent = aField->GetId() == VALUE && newFieldValue != aField->GetText();
|
||||
|
||||
/* If the value field is changed, this is equivalent to creating a new component from
|
||||
* the old one. Rename the component and remove any conflicting aliases to prevent name
|
||||
* errors when updating the library.
|
||||
*/
|
||||
if( aField->GetId() == VALUE && newFieldValue != aField->GetText() )
|
||||
if( creatingNewComponent )
|
||||
{
|
||||
wxString msg;
|
||||
wxString lib = GetCurLib();
|
||||
|
@ -168,11 +170,13 @@ void LIB_EDIT_FRAME::EditField( LIB_FIELD* aField )
|
|||
m_libMgr->UpdatePart( parent, lib, fieldText );
|
||||
}
|
||||
|
||||
dlg.UpdateField( aField );
|
||||
|
||||
if( !aField->InEditMode() )
|
||||
if( !aField->InEditMode() && !creatingNewComponent )
|
||||
{
|
||||
SaveCopyInUndoList( parent );
|
||||
}
|
||||
|
||||
dlg.UpdateField( aField );
|
||||
m_canvas->Refresh();
|
||||
|
||||
OnModify();
|
||||
|
|
Loading…
Reference in New Issue