Fix logic around Select All inside an entered group.
Fixes https://gitlab.com/kicad/code/kicad/issues/12411
(cherry picked from commit 2d3b8d6393
)
This commit is contained in:
parent
9cb6df9c38
commit
44ec38ad2d
|
@ -2700,28 +2700,26 @@ void PCB_SELECTION_TOOL::FilterCollectorForHierarchy( GENERAL_COLLECTOR& aCollec
|
|||
if( !m_isFootprintEditor && parent && parent->Type() == PCB_FOOTPRINT_T )
|
||||
start = parent;
|
||||
|
||||
// If a group is entered, disallow selections of objects outside the group.
|
||||
if( m_enteredGroup && !PCB_GROUP::WithinScope( item, m_enteredGroup, m_isFootprintEditor ) )
|
||||
{
|
||||
aCollector.Remove( item );
|
||||
continue;
|
||||
}
|
||||
|
||||
// If any element is a member of a group, replace those elements with the top containing
|
||||
// group.
|
||||
PCB_GROUP* aTop = PCB_GROUP::TopLevelGroup( start, m_enteredGroup, m_isFootprintEditor );
|
||||
|
||||
if( aTop )
|
||||
if( PCB_GROUP* top = PCB_GROUP::TopLevelGroup( start, m_enteredGroup, m_isFootprintEditor ) )
|
||||
{
|
||||
if( aTop != item )
|
||||
if( top != item )
|
||||
{
|
||||
toAdd.insert( aTop );
|
||||
aTop->SetFlags( TEMP_SELECTED );
|
||||
toAdd.insert( top );
|
||||
top->SetFlags(CANDIDATE );
|
||||
|
||||
aCollector.Remove( item );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if( m_enteredGroup
|
||||
&& !PCB_GROUP::WithinScope( item, m_enteredGroup, m_isFootprintEditor ) )
|
||||
{
|
||||
// If a group is entered, disallow selections of objects outside the group.
|
||||
aCollector.Remove( item );
|
||||
continue;
|
||||
}
|
||||
|
||||
// Footprints are a bit easier as they can't be nested.
|
||||
if( parent && ( parent->GetFlags() & TEMP_SELECTED ) )
|
||||
|
|
Loading…
Reference in New Issue