Rebuild groups as a separate pass (required for nested groups).
Fixes https://gitlab.com/kicad/code/kicad/issues/5858
This commit is contained in:
parent
e789ad9fb2
commit
04f61fb1f2
|
@ -128,12 +128,19 @@ MODULE::MODULE( const MODULE& aModule ) :
|
||||||
for( PCB_GROUP* group : aModule.Groups() )
|
for( PCB_GROUP* group : aModule.Groups() )
|
||||||
{
|
{
|
||||||
PCB_GROUP* newGroup = static_cast<PCB_GROUP*>( group->Clone() );
|
PCB_GROUP* newGroup = static_cast<PCB_GROUP*>( group->Clone() );
|
||||||
|
ptrMap[ group ] = newGroup;
|
||||||
|
Add( newGroup );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rebuild groups
|
||||||
|
for( PCB_GROUP* group : aModule.Groups() )
|
||||||
|
{
|
||||||
|
PCB_GROUP* newGroup = static_cast<PCB_GROUP*>( ptrMap[ group ] );
|
||||||
|
|
||||||
const_cast<std::unordered_set<BOARD_ITEM*>*>( &newGroup->GetItems() )->clear();
|
const_cast<std::unordered_set<BOARD_ITEM*>*>( &newGroup->GetItems() )->clear();
|
||||||
|
|
||||||
for( BOARD_ITEM* member : group->GetItems() )
|
for( BOARD_ITEM* member : group->GetItems() )
|
||||||
newGroup->AddItem( ptrMap[ member ] );
|
newGroup->AddItem( ptrMap[ member ] );
|
||||||
|
|
||||||
Add( newGroup );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy auxiliary data: 3D_Drawings info
|
// Copy auxiliary data: 3D_Drawings info
|
||||||
|
|
Loading…
Reference in New Issue