Fixed undo/redo while routing with the PNS error.
This commit is contained in:
parent
510fee1358
commit
5fea60d20f
|
@ -290,6 +290,7 @@ void ROUTER_TOOL::updateEndItem( TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
void ROUTER_TOOL::startRouting()
|
void ROUTER_TOOL::startRouting()
|
||||||
{
|
{
|
||||||
|
bool saveUndoBuffer = true;
|
||||||
VIEW_CONTROLS* ctls = getViewControls();
|
VIEW_CONTROLS* ctls = getViewControls();
|
||||||
|
|
||||||
int width = getDefaultWidth( m_startItem ? m_startItem->GetNet() : -1 );
|
int width = getDefaultWidth( m_startItem ? m_startItem->GetNet() : -1 );
|
||||||
|
@ -317,16 +318,16 @@ void ROUTER_TOOL::startRouting()
|
||||||
{
|
{
|
||||||
if( evt->IsCancel() )
|
if( evt->IsCancel() )
|
||||||
break;
|
break;
|
||||||
|
else if( evt->Action() == TA_UNDO_REDO )
|
||||||
|
{
|
||||||
|
saveUndoBuffer = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
else if( evt->IsMotion() )
|
else if( evt->IsMotion() )
|
||||||
{
|
{
|
||||||
updateEndItem( *evt );
|
updateEndItem( *evt );
|
||||||
m_router->Move( m_endSnapPoint, m_endItem );
|
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 ) )
|
else if( evt->IsClick( BUT_LEFT ) )
|
||||||
{
|
{
|
||||||
updateEndItem( *evt );
|
updateEndItem( *evt );
|
||||||
|
@ -376,9 +377,17 @@ void ROUTER_TOOL::startRouting()
|
||||||
|
|
||||||
m_router->StopRouting();
|
m_router->StopRouting();
|
||||||
|
|
||||||
// Save the recent changes in the undo buffer
|
if( saveUndoBuffer )
|
||||||
getEditFrame<PCB_EDIT_FRAME>()->SaveCopyInUndoList( m_router->GetLastChanges(), UR_UNSPECIFIED );
|
{
|
||||||
getEditFrame<PCB_EDIT_FRAME>()->OnModify();
|
// 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->SetAutoPan( false );
|
||||||
ctls->ForceCursorPosition( false );
|
ctls->ForceCursorPosition( false );
|
||||||
|
|
Loading…
Reference in New Issue