Browse Source

libedit: field edition should be undoable

pull/5/merge
Tomasz Włostowski 8 years ago
committed by Maciej Suminski
parent
commit
72de4e1857
  1. 2
      eeschema/libedit_undo_redo.cpp
  2. 10
      eeschema/libfield.cpp

2
eeschema/libedit_undo_redo.cpp

@ -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.

10
eeschema/libfield.cpp

@ -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…
Cancel
Save