Copy ratsnest flags when exchanging modules.

Fixes: lp:1834214
* https://bugs.launchpad.net/kicad/+bug/1834214
This commit is contained in:
Jeff Young 2019-07-21 19:48:38 -06:00
parent b858fa38c4
commit 2ca379b281
2 changed files with 15 additions and 16 deletions

View File

@ -398,8 +398,8 @@ TEXTE_MODULE* getMatchingTextItem( TEXTE_MODULE* aRefItem, MODULE* aModule )
void PCB_EDIT_FRAME::Exchange_Module( MODULE* aSrc, MODULE* aDest, BOARD_COMMIT& aCommit,
bool deleteExtraTexts,
bool resetTextLayers, bool resetTextEffects )
bool deleteExtraTexts, bool resetTextLayers,
bool resetTextEffects )
{
aDest->SetParent( GetBoard() );
@ -423,7 +423,10 @@ void PCB_EDIT_FRAME::Exchange_Module( MODULE* aSrc, MODULE* aDest, BOARD_COMMIT&
D_PAD* oldPad = aSrc->FindPadByName( pad->GetName() );
if( oldPad )
{
pad->SetLocalRatsnestVisible( oldPad->GetLocalRatsnestVisible() );
pad->SetNetCode( oldPad->GetNetCode() );
}
}
// Copy reference

View File

@ -1466,24 +1466,16 @@ void PCB_EDITOR_CONTROL::ratsnestTimer( wxTimerEvent& aEvent )
void PCB_EDITOR_CONTROL::calculateSelectionRatsnest()
{
auto selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
auto& selection = selectionTool->GetSelection();
auto connectivity = board()->GetConnectivity();
SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
SELECTION& selection = selectionTool->GetSelection();
std::shared_ptr<CONNECTIVITY_DATA> connectivity = board()->GetConnectivity();
std::vector<BOARD_ITEM*> items;
items.reserve( selection.Size() );
for( auto item : selection )
for( EDA_ITEM* item : selection )
{
auto board_item = static_cast<BOARD_CONNECTED_ITEM*>( item );
BOARD_CONNECTED_ITEM* boardItem = static_cast<BOARD_CONNECTED_ITEM*>( item );
if( board_item->Type() != PCB_MODULE_T
&& ( board_item->GetLocalRatsnestVisible()
|| displayOptions()->m_ShowModuleRatsnest ) )
{
items.push_back( board_item );
}
else if( board_item->Type() == PCB_MODULE_T )
if( boardItem->Type() == PCB_MODULE_T )
{
for( auto pad : static_cast<MODULE*>( item )->Pads() )
{
@ -1491,6 +1483,10 @@ void PCB_EDITOR_CONTROL::calculateSelectionRatsnest()
items.push_back( pad );
}
}
else if( boardItem->GetLocalRatsnestVisible() || displayOptions()->m_ShowModuleRatsnest )
{
items.push_back( boardItem );
}
}
connectivity->ComputeDynamicRatsnest( items );