Schematic: new flag IS_BROKEN for trimming BreakSegment danglers
This commit is contained in:
parent
f03fd5ad2d
commit
6cc17e4a16
|
@ -304,12 +304,13 @@ void SCH_EDIT_FRAME::BreakSegment( SCH_LINE* aSegment, const VECTOR2I& aPoint,
|
||||||
|
|
||||||
newSegment->SetStartPoint( aPoint );
|
newSegment->SetStartPoint( aPoint );
|
||||||
newSegment->SetConnectivityDirty( true );
|
newSegment->SetConnectivityDirty( true );
|
||||||
|
newSegment->SetFlags( IS_NEW | IS_BROKEN );
|
||||||
AddToScreen( newSegment, aScreen );
|
AddToScreen( newSegment, aScreen );
|
||||||
|
|
||||||
SaveCopyInUndoList( aScreen, newSegment, UNDO_REDO::NEWITEM, true );
|
SaveCopyInUndoList( aScreen, newSegment, UNDO_REDO::NEWITEM, true );
|
||||||
SaveCopyInUndoList( aScreen, aSegment, UNDO_REDO::CHANGED, true );
|
SaveCopyInUndoList( aScreen, aSegment, UNDO_REDO::CHANGED, true );
|
||||||
|
|
||||||
aSegment->SetFlags( IS_CHANGED );
|
aSegment->SetFlags( IS_CHANGED | IS_BROKEN );
|
||||||
|
|
||||||
UpdateItem( aSegment, false, true );
|
UpdateItem( aSegment, false, true );
|
||||||
aSegment->SetEndPoint( aPoint );
|
aSegment->SetEndPoint( aPoint );
|
||||||
|
|
|
@ -966,10 +966,7 @@ void SCH_MOVE_TOOL::trimDanglingLines()
|
||||||
// Delete newly dangling lines:
|
// Delete newly dangling lines:
|
||||||
// Find split segments (one segment is new, the other is changed) that
|
// Find split segments (one segment is new, the other is changed) that
|
||||||
// we aren't dragging and don't have selected
|
// we aren't dragging and don't have selected
|
||||||
if( aChangedItem->IsDangling() && !aChangedItem->IsSelected()
|
if( aChangedItem->HasFlag( IS_BROKEN) && aChangedItem->IsDangling() && !aChangedItem->IsSelected() )
|
||||||
&& ( aChangedItem->IsNew()
|
|
||||||
|| ( !aChangedItem->IsDragging() && aChangedItem->IsModified() ) )
|
|
||||||
&& aChangedItem->IsType( { SCH_LINE_T } ) )
|
|
||||||
{
|
{
|
||||||
danglers.insert( aChangedItem );
|
danglers.insert( aChangedItem );
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,7 +144,7 @@ public:
|
||||||
|
|
||||||
EDA_ITEM_FLAGS GetEditFlags() const
|
EDA_ITEM_FLAGS GetEditFlags() const
|
||||||
{
|
{
|
||||||
constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVING | IS_DRAGGING
|
constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVING | IS_DRAGGING | IS_BROKEN
|
||||||
| IS_CHANGED | STRUCT_DELETED );
|
| IS_CHANGED | STRUCT_DELETED );
|
||||||
|
|
||||||
return m_flags & mask;
|
return m_flags & mask;
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#define IN_EDIT (1 << 2) ///< Item currently edited
|
#define IN_EDIT (1 << 2) ///< Item currently edited
|
||||||
#define IS_MOVING (1 << 3) ///< Item being moved
|
#define IS_MOVING (1 << 3) ///< Item being moved
|
||||||
#define IS_NEW (1 << 4) ///< New item, just created
|
#define IS_NEW (1 << 4) ///< New item, just created
|
||||||
|
#define IS_BROKEN (1 << 5) ///< Is a segment just broken by BreakSegment
|
||||||
#define IS_DRAGGING (1 << 6) ///< Item being dragged
|
#define IS_DRAGGING (1 << 6) ///< Item being dragged
|
||||||
#define IS_DELETED (1 << 7)
|
#define IS_DELETED (1 << 7)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue