Commit 5ac6579a authored by Maciej Suminski's avatar Maciej Suminski

Cursor snaps to EDIT_POINTs.

Added POINT_EDITOR::isModified().
parent ecb3aebc
...@@ -456,7 +456,7 @@ public: ...@@ -456,7 +456,7 @@ public:
* @param aConstrained is the point that is put under constrain. * @param aConstrained is the point that is put under constrain.
* @param aConstrainer is the point that is the source of the constrain. * @param aConstrainer is the point that is the source of the constrain.
*/ */
EPC_45DEGREE ( EDIT_POINT& aConstrained, const EDIT_POINT& aConstrainer ) : EPC_45DEGREE( EDIT_POINT& aConstrained, const EDIT_POINT& aConstrainer ) :
EDIT_POINT_CONSTRAINT( aConstrained ), m_constrainer( aConstrainer ) EDIT_POINT_CONSTRAINT( aConstrained ), m_constrainer( aConstrainer )
{} {}
......
...@@ -62,7 +62,6 @@ public: ...@@ -62,7 +62,6 @@ public:
case S_SEGMENT: case S_SEGMENT:
points->AddPoint( segment->GetStart() ); points->AddPoint( segment->GetStart() );
points->AddPoint( segment->GetEnd() ); points->AddPoint( segment->GetEnd() );
break; break;
case S_ARC: case S_ARC:
...@@ -194,12 +193,14 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) ...@@ -194,12 +193,14 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent )
controls->ShowCursor( true ); controls->ShowCursor( true );
controls->SetAutoPan( true ); controls->SetAutoPan( true );
controls->SetSnapping( true ); controls->SetSnapping( true );
controls->ForceCursorPosition( true, point->GetPosition() );
} }
else else
{ {
controls->ShowCursor( false ); controls->ShowCursor( false );
controls->SetAutoPan( false ); controls->SetAutoPan( false );
controls->SetSnapping( false ); controls->SetSnapping( false );
controls->ForceCursorPosition( false );
} }
} }
...@@ -213,6 +214,7 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) ...@@ -213,6 +214,7 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent )
// Save items, so changes can be undone // Save items, so changes can be undone
editFrame->OnModify(); editFrame->OnModify();
editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED ); editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED );
controls->ForceCursorPosition( false );
modified = true; modified = true;
} }
...@@ -299,11 +301,11 @@ void POINT_EDITOR::updateItem() const ...@@ -299,11 +301,11 @@ void POINT_EDITOR::updateItem() const
switch( segment->GetShape() ) switch( segment->GetShape() )
{ {
case S_SEGMENT: case S_SEGMENT:
if( &(*m_editPoints)[0] == m_dragPoint ) if( isModified( (*m_editPoints)[0] ) )
segment->SetStart( wxPoint( (*m_editPoints)[0].GetPosition().x, segment->SetStart( wxPoint( (*m_editPoints)[0].GetPosition().x,
(*m_editPoints)[0].GetPosition().y ) ); (*m_editPoints)[0].GetPosition().y ) );
else if( &(*m_editPoints)[1] == m_dragPoint ) else if( isModified( (*m_editPoints)[1] ) )
segment->SetEnd( wxPoint( (*m_editPoints)[1].GetPosition().x, segment->SetEnd( wxPoint( (*m_editPoints)[1].GetPosition().x,
(*m_editPoints)[1].GetPosition().y ) ); (*m_editPoints)[1].GetPosition().y ) );
...@@ -351,7 +353,7 @@ void POINT_EDITOR::updateItem() const ...@@ -351,7 +353,7 @@ void POINT_EDITOR::updateItem() const
const VECTOR2I& center = (*m_editPoints)[0].GetPosition(); const VECTOR2I& center = (*m_editPoints)[0].GetPosition();
const VECTOR2I& end = (*m_editPoints)[1].GetPosition(); const VECTOR2I& end = (*m_editPoints)[1].GetPosition();
if( m_dragPoint == &(*m_editPoints)[0] ) if( isModified( (*m_editPoints)[0] ) )
{ {
wxPoint moveVector = wxPoint( center.x, center.y ) - segment->GetCenter(); wxPoint moveVector = wxPoint( center.x, center.y ) - segment->GetCenter();
segment->Move( moveVector ); segment->Move( moveVector );
......
...@@ -74,6 +74,12 @@ private: ...@@ -74,6 +74,12 @@ private:
///> Updates edit points with item's points. ///> Updates edit points with item's points.
void updatePoints() const; void updatePoints() const;
///> Returns true if aPoint is the currently modified point.
inline bool isModified( const EDIT_POINT& aPoint ) const
{
return m_dragPoint == &aPoint;
}
///> Returns a point that should be used as a constrainer for 45 degrees mode. ///> Returns a point that should be used as a constrainer for 45 degrees mode.
EDIT_POINT get45DegConstrainer() const; EDIT_POINT get45DegConstrainer() const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment