Cursor snaps to EDIT_POINTs.
Added POINT_EDITOR::isModified().
This commit is contained in:
parent
ecb3aebce3
commit
5ac6579a87
|
@ -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 )
|
||||||
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 )
|
||||||
// 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
|
||||||
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
|
||||||
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:
|
||||||
///> 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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue