Fixed SELECTION_TOOL::selectCursor()

In the previous version the method did not work correctly
when an action was invoked from context menu. In such case,
the cursor position was obtained in the moment of selecting
the action, instead of using the right click location.
This commit is contained in:
Maciej Suminski 2017-07-12 09:34:20 +02:00
parent 2a301d5883
commit 08c4a0bc7b
4 changed files with 20 additions and 6 deletions

View File

@ -362,7 +362,7 @@ VECTOR2D WX_VIEW_CONTROLS::GetMousePosition( bool aWorldCoordinates ) const
}
VECTOR2D WX_VIEW_CONTROLS::GetCursorPosition() const
VECTOR2D WX_VIEW_CONTROLS::GetCursorPosition( bool aEnableSnapping ) const
{
if( m_settings.m_forceCursorPosition )
{
@ -372,7 +372,7 @@ VECTOR2D WX_VIEW_CONTROLS::GetCursorPosition() const
{
VECTOR2D mousePosition = GetMousePosition();
if( m_settings.m_snappingEnabled )
if( aEnableSnapping )
return m_view->GetGAL()->GetGridPoint( mousePosition );
else
return mousePosition;

View File

@ -166,14 +166,26 @@ public:
virtual VECTOR2D GetMousePosition( bool aWorldCoordinates = true ) const = 0;
/**
* Function GetCursorPosition()
* Returns the current cursor position in world coordinates. Note, that it may be
* different from the mouse pointer position if snapping is enabled or cursor position
* is forced to a specific point.
*
* @return The current cursor position in world coordinates.
*/
virtual VECTOR2D GetCursorPosition() const = 0;
VECTOR2D GetCursorPosition() const
{
return GetCursorPosition( m_settings.m_snappingEnabled );
}
/**
* Returns the current cursor position in world coordinates. Note, that it may be
* different from the mouse pointer position if snapping is enabled or cursor position
* is forced to a specific point.
*
* @param aEnableSnapping selects whether cursor position should be snapped to the grid.
* @return The current cursor position in world coordinates.
*/
virtual VECTOR2D GetCursorPosition( bool aEnableSnapping ) const = 0;
/**
* Function ForceCursorPosition()

View File

@ -73,8 +73,10 @@ public:
/// @copydoc VIEW_CONTROLS::GetMousePosition()
VECTOR2D GetMousePosition( bool aWorldCoordinates = true ) const override;
using VIEW_CONTROLS::GetCursorPosition;
/// @copydoc VIEW_CONTROLS::GetCursorPosition()
VECTOR2D GetCursorPosition() const override;
VECTOR2D GetCursorPosition( bool aSnappingEnabled ) const override;
/// @copydoc VIEW_CONTROLS::CursorWarp()
void WarpCursor( const VECTOR2D& aPosition, bool aWorldCoordinates = false,

View File

@ -472,7 +472,7 @@ bool SELECTION_TOOL::selectCursor( bool aSelectAlways )
if( aSelectAlways || m_selection.Empty() )
{
clearSelection();
selectPoint( getViewControls()->GetMousePosition() );
selectPoint( getViewControls()->GetCursorPosition( false ) );
}
return !m_selection.Empty();