Commit 5fea60d2 authored by Maciej Suminski's avatar Maciej Suminski

Fixed undo/redo while routing with the PNS error.

parent 510fee13
......@@ -290,6 +290,7 @@ void ROUTER_TOOL::updateEndItem( TOOL_EVENT& aEvent )
void ROUTER_TOOL::startRouting()
{
bool saveUndoBuffer = true;
VIEW_CONTROLS* ctls = getViewControls();
int width = getDefaultWidth( m_startItem ? m_startItem->GetNet() : -1 );
......@@ -317,16 +318,16 @@ void ROUTER_TOOL::startRouting()
{
if( evt->IsCancel() )
break;
else if( evt->Action() == TA_UNDO_REDO )
{
saveUndoBuffer = false;
break;
}
else if( evt->IsMotion() )
{
updateEndItem( *evt );
m_router->Move( m_endSnapPoint, m_endItem );
}
else if( evt->Action() == TA_UNDO_REDO )
{
std::cout << "syncing the world while routing, I am going to craaaaaaaaaaaash!" << std::endl;
m_router->SyncWorld();
}
else if( evt->IsClick( BUT_LEFT ) )
{
updateEndItem( *evt );
......@@ -376,9 +377,17 @@ void ROUTER_TOOL::startRouting()
m_router->StopRouting();
// Save the recent changes in the undo buffer
getEditFrame<PCB_EDIT_FRAME>()->SaveCopyInUndoList( m_router->GetLastChanges(), UR_UNSPECIFIED );
getEditFrame<PCB_EDIT_FRAME>()->OnModify();
if( saveUndoBuffer )
{
// Save the recent changes in the undo buffer
getEditFrame<PCB_EDIT_FRAME>()->SaveCopyInUndoList( m_router->GetLastChanges(), UR_UNSPECIFIED );
getEditFrame<PCB_EDIT_FRAME>()->OnModify();
}
else
{
// It was interrupted by TA_UNDO_REDO event, so we have to sync the world now
m_router->SyncWorld();
}
ctls->SetAutoPan( false );
ctls->ForceCursorPosition( false );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment