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

Cursor snaps to EDIT_POINTs.

Added POINT_EDITOR::isModified().
parent ecb3aebc
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -62,7 +62,6 @@ public:
                case S_SEGMENT:
                    points->AddPoint( segment->GetStart() );
                    points->AddPoint( segment->GetEnd() );

                    break;

                case S_ARC:
@@ -194,12 +193,14 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent )
                        controls->ShowCursor( true );
                        controls->SetAutoPan( true );
                        controls->SetSnapping( true );
                        controls->ForceCursorPosition( true, point->GetPosition() );
                    }
                    else
                    {
                        controls->ShowCursor( false );
                        controls->SetAutoPan( 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
                    editFrame->OnModify();
                    editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED );
                    controls->ForceCursorPosition( false );
                    modified = true;
                }

@@ -299,11 +301,11 @@ void POINT_EDITOR::updateItem() const
        switch( segment->GetShape() )
        {
        case S_SEGMENT:
            if( &(*m_editPoints)[0] == m_dragPoint )
            if( isModified( (*m_editPoints)[0] ) )
                segment->SetStart( wxPoint( (*m_editPoints)[0].GetPosition().x,
                                            (*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,
                                          (*m_editPoints)[1].GetPosition().y ) );

@@ -351,7 +353,7 @@ void POINT_EDITOR::updateItem() const
            const VECTOR2I& center = (*m_editPoints)[0].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();
                segment->Move( moveVector );
+6 −0
Original line number Diff line number Diff line
@@ -74,6 +74,12 @@ private:
    ///> Updates edit points with item's points.
    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.
    EDIT_POINT get45DegConstrainer() const;

+1 −1

File changed.

Contains only whitespace changes.