diff --git a/common/tool/tool_manager.cpp b/common/tool/tool_manager.cpp index 7a6df985fe..cf64603b4d 100644 --- a/common/tool/tool_manager.cpp +++ b/common/tool/tool_manager.cpp @@ -37,6 +37,7 @@ #include #include +#include #include #include @@ -577,6 +578,10 @@ void TOOL_MANAGER::dispatchContextMenu( TOOL_EVENT& aEvent ) if( st->contextMenuTrigger == CMENU_NOW ) st->contextMenuTrigger = CMENU_OFF; + // Temporarily store the cursor position, so the tools could execute actions + // using the point where the user has invoked a context menu + m_viewControls->ForceCursorPosition( true, m_viewControls->GetCursorPosition() ); + boost::scoped_ptr menu( new CONTEXT_MENU( *st->contextMenu ) ); GetEditFrame()->PopupMenu( menu.get() ); @@ -587,6 +592,8 @@ void TOOL_MANAGER::dispatchContextMenu( TOOL_EVENT& aEvent ) dispatchInternal( evt ); } + m_viewControls->ForceCursorPosition( false ); + break; } }