Snapping settings are valid while autopanning.
This commit is contained in:
parent
f87b6962e0
commit
b317894ea0
|
@ -224,7 +224,7 @@ void TOOL_DISPATCHER::DispatchWxEvent( wxEvent& aEvent )
|
||||||
VECTOR2D screenPos = m_toolMgr->GetViewControls()->GetMousePosition();
|
VECTOR2D screenPos = m_toolMgr->GetViewControls()->GetMousePosition();
|
||||||
VECTOR2D pos = getView()->ToWorld( screenPos );
|
VECTOR2D pos = getView()->ToWorld( screenPos );
|
||||||
|
|
||||||
if( pos != m_lastMousePos || type == KIGFX::WX_VIEW_CONTROLS::EVT_REFRESH_MOUSE )
|
if( pos != m_lastMousePos )
|
||||||
{
|
{
|
||||||
motion = true;
|
motion = true;
|
||||||
m_lastMousePos = pos;
|
m_lastMousePos = pos;
|
||||||
|
|
|
@ -73,12 +73,7 @@ void WX_VIEW_CONTROLS::onMotion( wxMouseEvent& aEvent )
|
||||||
m_mousePosition.x = aEvent.GetX();
|
m_mousePosition.x = aEvent.GetX();
|
||||||
m_mousePosition.y = aEvent.GetY();
|
m_mousePosition.y = aEvent.GetY();
|
||||||
|
|
||||||
if( m_forceCursorPosition )
|
updateCursor();
|
||||||
m_cursorPosition = m_view->ToScreen( m_forcedPosition );
|
|
||||||
else if( m_snappingEnabled )
|
|
||||||
m_cursorPosition = m_view->GetGAL()->GetGridPoint( m_mousePosition );
|
|
||||||
else
|
|
||||||
m_cursorPosition = m_mousePosition;
|
|
||||||
|
|
||||||
bool isAutoPanning = false;
|
bool isAutoPanning = false;
|
||||||
|
|
||||||
|
@ -166,17 +161,13 @@ void WX_VIEW_CONTROLS::onButton( wxMouseEvent& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aEvent.LeftUp() )
|
if( aEvent.LeftUp() )
|
||||||
{
|
|
||||||
m_state = IDLE; // Stop autopanning when user release left mouse button
|
m_state = IDLE; // Stop autopanning when user release left mouse button
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAG_PANNING:
|
case DRAG_PANNING:
|
||||||
if( aEvent.MiddleUp() )
|
if( aEvent.MiddleUp() )
|
||||||
{
|
|
||||||
m_state = IDLE;
|
m_state = IDLE;
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -208,6 +199,8 @@ void WX_VIEW_CONTROLS::onTimer( wxTimerEvent& aEvent )
|
||||||
dir = m_view->ToWorld( dir, false );
|
dir = m_view->ToWorld( dir, false );
|
||||||
m_view->SetCenter( m_view->GetCenter() + dir * m_autoPanSpeed );
|
m_view->SetCenter( m_view->GetCenter() + dir * m_autoPanSpeed );
|
||||||
|
|
||||||
|
updateCursor();
|
||||||
|
|
||||||
// Notify tools that the cursor position has changed in the world coordinates
|
// Notify tools that the cursor position has changed in the world coordinates
|
||||||
wxCommandEvent moveEvent( EVT_REFRESH_MOUSE );
|
wxCommandEvent moveEvent( EVT_REFRESH_MOUSE );
|
||||||
wxPostEvent( m_parentPanel, moveEvent );
|
wxPostEvent( m_parentPanel, moveEvent );
|
||||||
|
@ -298,3 +291,14 @@ bool WX_VIEW_CONTROLS::handleAutoPanning( const wxMouseEvent& aEvent )
|
||||||
wxASSERT_MSG( false, wxT( "This line should never be reached" ) );
|
wxASSERT_MSG( false, wxT( "This line should never be reached" ) );
|
||||||
return false; // Should not be reached, just avoid the compiler warnings..
|
return false; // Should not be reached, just avoid the compiler warnings..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WX_VIEW_CONTROLS::updateCursor()
|
||||||
|
{
|
||||||
|
if( m_forceCursorPosition )
|
||||||
|
m_cursorPosition = m_view->ToScreen( m_forcedPosition );
|
||||||
|
else if( m_snappingEnabled )
|
||||||
|
m_cursorPosition = m_view->GetGAL()->GetGridPoint( m_mousePosition );
|
||||||
|
else
|
||||||
|
m_cursorPosition = m_mousePosition;
|
||||||
|
}
|
||||||
|
|
|
@ -112,6 +112,12 @@ private:
|
||||||
*/
|
*/
|
||||||
bool handleAutoPanning( const wxMouseEvent& aEvent );
|
bool handleAutoPanning( const wxMouseEvent& aEvent );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function updateCursor()
|
||||||
|
* Recomputes the cursor coordinates basing on the current snapping settings and mouse position.
|
||||||
|
*/
|
||||||
|
void updateCursor();
|
||||||
|
|
||||||
/// Current state of VIEW_CONTROLS
|
/// Current state of VIEW_CONTROLS
|
||||||
STATE m_state;
|
STATE m_state;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue