Commit 9783aaf3 authored by Maciej Suminski's avatar Maciej Suminski

Splitting DRAWSEGMENTs with POINT_EDITOR.

parent 17ec7ace
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <class_drawsegment.h> #include <class_drawsegment.h>
#include <class_dimension.h> #include <class_dimension.h>
#include <class_zone.h> #include <class_zone.h>
#include <class_board.h>
/** /**
* Class POINT_EDITOR * Class POINT_EDITOR
...@@ -653,4 +654,30 @@ void POINT_EDITOR::breakOutline( const VECTOR2I& aBreakPoint ) ...@@ -653,4 +654,30 @@ void POINT_EDITOR::breakOutline( const VECTOR2I& aBreakPoint )
outline->InsertCorner( nearestIdx, nearestPoint.x, nearestPoint.y ); outline->InsertCorner( nearestIdx, nearestPoint.x, nearestPoint.y );
} }
else if( item->Type() == PCB_LINE_T )
{
getEditFrame<PCB_EDIT_FRAME>()->OnModify();
getEditFrame<PCB_EDIT_FRAME>()->SaveCopyInUndoList( selection.items, UR_CHANGED );
DRAWSEGMENT* segment = static_cast<DRAWSEGMENT*>( item );
if( segment->GetShape() == S_SEGMENT )
{
SEG seg( segment->GetStart(), segment->GetEnd() );
VECTOR2I nearestPoint = seg.NearestPoint( aBreakPoint );
// Move the end of the line to the break point..
segment->SetEnd( wxPoint( nearestPoint.x, nearestPoint.y ) );
// and add another one starting from the break point
DRAWSEGMENT* newSegment = new DRAWSEGMENT( *segment );
newSegment->ClearSelected();
newSegment->SetStart( wxPoint( nearestPoint.x, nearestPoint.y ) );
newSegment->SetEnd( wxPoint( seg.B.x, seg.B.y ) );
getModel<BOARD>( PCB_T )->Add( newSegment );
getView()->Add( newSegment );
}
}
} }
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