diff --git a/common/tool/tool_interactive.cpp b/common/tool/tool_interactive.cpp index 86a2c71b50..5f05de8e4f 100644 --- a/common/tool/tool_interactive.cpp +++ b/common/tool/tool_interactive.cpp @@ -66,6 +66,8 @@ void TOOL_INTERACTIVE::goInternal( TOOL_STATE_FUNC& aState, const TOOL_EVENT_LIS void TOOL_INTERACTIVE::SetContextMenu( CONTEXT_MENU* aMenu, CONTEXT_MENU_TRIGGER aTrigger ) { - aMenu->SetTool( this ); + if( aMenu ) + aMenu->SetTool( this ); + m_toolMgr->ScheduleContextMenu( this, aMenu, aTrigger ); } diff --git a/pcbnew/router/router_tool.cpp b/pcbnew/router/router_tool.cpp index 387e03cfbd..1ab66f60e0 100644 --- a/pcbnew/router/router_tool.cpp +++ b/pcbnew/router/router_tool.cpp @@ -722,6 +722,9 @@ int ROUTER_TOOL::mainLoop( PNS_ROUTER_MODE aMode ) m_savedSettings = m_router->Settings(); m_savedSizes = m_router->Sizes(); + // Disable the context menu before it is destroyed + SetContextMenu( NULL, CMENU_OFF ); + return 0; } @@ -745,8 +748,6 @@ void ROUTER_TOOL::performDragging() { ctls->ForceCursorPosition( false ); - VECTOR2I p0 = ctls->GetCursorPosition(); - if( evt->IsCancel() || evt->IsActivate() ) break; else if( evt->IsMotion() )