Better handling of dangling markers during bus unfold.
This commit is contained in:
parent
77c19261f6
commit
c981c3668a
|
@ -43,6 +43,8 @@ public:
|
|||
bool IsDanglingStart() const { return m_isDanglingStart; }
|
||||
bool IsDanglingEnd() const { return m_isDanglingEnd; }
|
||||
|
||||
void SetEndDangling( bool aDanglingState ) { m_isDanglingEnd = aDanglingState; }
|
||||
|
||||
// Do not create a copy constructor. The one generated by the compiler is adequate.
|
||||
|
||||
~SCH_BUS_ENTRY_BASE() { }
|
||||
|
|
|
@ -375,6 +375,7 @@ int SCH_LINE_WIRE_BUS_TOOL::UnfoldBus( const TOOL_EVENT& aEvent )
|
|||
SCH_LINE* SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus( const wxString& aNet, const VECTOR2I& aPos )
|
||||
{
|
||||
SCHEMATIC_SETTINGS& cfg = getModel<SCHEMATIC>()->Settings();
|
||||
SCH_SCREEN* screen = m_frame->GetScreen();
|
||||
|
||||
VECTOR2I pos = aPos;
|
||||
|
||||
|
@ -384,7 +385,7 @@ SCH_LINE* SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus( const wxString& aNet, const VECTO
|
|||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection );
|
||||
|
||||
m_busUnfold.entry = new SCH_BUS_WIRE_ENTRY( pos );
|
||||
m_busUnfold.entry->SetParent( m_frame->GetScreen() );
|
||||
m_busUnfold.entry->SetParent( screen );
|
||||
m_frame->AddToScreen( m_busUnfold.entry, m_frame->GetScreen() );
|
||||
|
||||
m_busUnfold.label = new SCH_LABEL( m_busUnfold.entry->GetEnd(), aNet );
|
||||
|
@ -399,6 +400,15 @@ SCH_LINE* SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus( const wxString& aNet, const VECTO
|
|||
|
||||
getViewControls()->SetCrossHairCursorPosition( m_busUnfold.entry->GetEnd(), false );
|
||||
|
||||
std::vector<DANGLING_END_ITEM> endPoints;
|
||||
|
||||
for( SCH_ITEM* item : screen->Items().Overlapping( m_busUnfold.entry->GetBoundingBox() ) )
|
||||
item->GetEndPoints( endPoints );
|
||||
|
||||
m_busUnfold.entry->UpdateDanglingState( endPoints );
|
||||
m_busUnfold.entry->SetEndDangling( false );
|
||||
m_busUnfold.label->SetIsDangling( false );
|
||||
|
||||
return startSegments( LAYER_WIRE, m_busUnfold.entry->GetEnd() );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue