Copy ratsnest flags when exchanging modules.
Fixes: lp:1834214 * https://bugs.launchpad.net/kicad/+bug/1834214
This commit is contained in:
parent
b858fa38c4
commit
2ca379b281
|
@ -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,
|
void PCB_EDIT_FRAME::Exchange_Module( MODULE* aSrc, MODULE* aDest, BOARD_COMMIT& aCommit,
|
||||||
bool deleteExtraTexts,
|
bool deleteExtraTexts, bool resetTextLayers,
|
||||||
bool resetTextLayers, bool resetTextEffects )
|
bool resetTextEffects )
|
||||||
{
|
{
|
||||||
aDest->SetParent( GetBoard() );
|
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() );
|
D_PAD* oldPad = aSrc->FindPadByName( pad->GetName() );
|
||||||
|
|
||||||
if( oldPad )
|
if( oldPad )
|
||||||
|
{
|
||||||
|
pad->SetLocalRatsnestVisible( oldPad->GetLocalRatsnestVisible() );
|
||||||
pad->SetNetCode( oldPad->GetNetCode() );
|
pad->SetNetCode( oldPad->GetNetCode() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy reference
|
// Copy reference
|
||||||
|
|
|
@ -1466,24 +1466,16 @@ void PCB_EDITOR_CONTROL::ratsnestTimer( wxTimerEvent& aEvent )
|
||||||
|
|
||||||
void PCB_EDITOR_CONTROL::calculateSelectionRatsnest()
|
void PCB_EDITOR_CONTROL::calculateSelectionRatsnest()
|
||||||
{
|
{
|
||||||
auto selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
||||||
auto& selection = selectionTool->GetSelection();
|
SELECTION& selection = selectionTool->GetSelection();
|
||||||
auto connectivity = board()->GetConnectivity();
|
std::shared_ptr<CONNECTIVITY_DATA> connectivity = board()->GetConnectivity();
|
||||||
|
|
||||||
std::vector<BOARD_ITEM*> items;
|
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
|
if( boardItem->Type() == PCB_MODULE_T )
|
||||||
&& ( board_item->GetLocalRatsnestVisible()
|
|
||||||
|| displayOptions()->m_ShowModuleRatsnest ) )
|
|
||||||
{
|
|
||||||
items.push_back( board_item );
|
|
||||||
}
|
|
||||||
else if( board_item->Type() == PCB_MODULE_T )
|
|
||||||
{
|
{
|
||||||
for( auto pad : static_cast<MODULE*>( item )->Pads() )
|
for( auto pad : static_cast<MODULE*>( item )->Pads() )
|
||||||
{
|
{
|
||||||
|
@ -1491,6 +1483,10 @@ void PCB_EDITOR_CONTROL::calculateSelectionRatsnest()
|
||||||
items.push_back( pad );
|
items.push_back( pad );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( boardItem->GetLocalRatsnestVisible() || displayOptions()->m_ShowModuleRatsnest )
|
||||||
|
{
|
||||||
|
items.push_back( boardItem );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
connectivity->ComputeDynamicRatsnest( items );
|
connectivity->ComputeDynamicRatsnest( items );
|
||||||
|
|
Loading…
Reference in New Issue