From 5e72a1008b6d9a39f6403f9e77080b07571ffd7e Mon Sep 17 00:00:00 2001 From: Mike Williams Date: Tue, 13 Dec 2022 09:01:52 -0500 Subject: [PATCH] Schematic: don't trim unchanged segments that are connected Previously if you had a wire with two unconnected ends and dragged the end of another wire to connect with one end, it would delete the first wire. --- eeschema/bus-wire-junction.cpp | 3 +++ eeschema/tools/sch_move_tool.cpp | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/eeschema/bus-wire-junction.cpp b/eeschema/bus-wire-junction.cpp index eb76b29d36..6201f28243 100644 --- a/eeschema/bus-wire-junction.cpp +++ b/eeschema/bus-wire-junction.cpp @@ -309,6 +309,9 @@ bool SCH_EDIT_FRAME::BreakSegment( SCH_LINE* aSegment, const VECTOR2I& aPoint, SaveCopyInUndoList( aScreen, newSegment, UNDO_REDO::NEWITEM, true ); SaveCopyInUndoList( aScreen, aSegment, UNDO_REDO::CHANGED, true ); + aSegment->SetFlags( IS_CHANGED ); + newSegment->SetFlags( IS_NEW ); + UpdateItem( aSegment, false, true ); aSegment->SetEndPoint( aPoint ); diff --git a/eeschema/tools/sch_move_tool.cpp b/eeschema/tools/sch_move_tool.cpp index f6ba15e55e..f7e836b7be 100644 --- a/eeschema/tools/sch_move_tool.cpp +++ b/eeschema/tools/sch_move_tool.cpp @@ -934,7 +934,8 @@ void SCH_MOVE_TOOL::trimDanglingLines() // Find split segments (one segment is new, the other is changed) that // we aren't dragging and don't have selected if( aChangedItem->IsDangling() && !aChangedItem->IsSelected() - && ( aChangedItem->IsNew() || !aChangedItem->IsDragging() ) + && ( aChangedItem->IsNew() + || ( !aChangedItem->IsDragging() && aChangedItem->IsModified() ) ) && aChangedItem->IsType( { SCH_LINE_T } ) ) { danglers.insert( aChangedItem );