pruneItemLayers() is not the right place to filter refdes & value.
(And we already filter all mandatory fields in pasteFootprintItemsToFootprintEditor() anyway.) Also, don't nuke a footprint which contains only fields during a paste. Fixes https://gitlab.com/kicad/code/kicad/-/issues/17937
This commit is contained in:
parent
e3d2f338de
commit
eb13dec265
|
@ -852,14 +852,7 @@ void PCB_CONTROL::pruneItemLayers( std::vector<BOARD_ITEM*>& aItems )
|
||||||
// NOTE: all traversals from the back as processFPItem() might delete the item
|
// NOTE: all traversals from the back as processFPItem() might delete the item
|
||||||
|
|
||||||
for( int ii = static_cast<int>( fp->Fields().size() ) - 1; ii >= 0; ii-- )
|
for( int ii = static_cast<int>( fp->Fields().size() ) - 1; ii >= 0; ii-- )
|
||||||
{
|
processFPItem( fp, fp->Fields()[ii] );
|
||||||
PCB_FIELD* field = fp->Fields()[ii];
|
|
||||||
|
|
||||||
if( field->GetId() == REFERENCE_FIELD || field->GetId() == VALUE_FIELD )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
processFPItem( fp, field );
|
|
||||||
}
|
|
||||||
|
|
||||||
for( int ii = static_cast<int>( fp->Pads().size() ) - 1; ii >= 0; ii-- )
|
for( int ii = static_cast<int>( fp->Pads().size() ) - 1; ii >= 0; ii-- )
|
||||||
processFPItem( fp, fp->Pads()[ii] );
|
processFPItem( fp, fp->Pads()[ii] );
|
||||||
|
@ -870,7 +863,10 @@ void PCB_CONTROL::pruneItemLayers( std::vector<BOARD_ITEM*>& aItems )
|
||||||
for( int ii = static_cast<int>( fp->GraphicalItems().size() ) - 1; ii >= 0; ii-- )
|
for( int ii = static_cast<int>( fp->GraphicalItems().size() ) - 1; ii >= 0; ii-- )
|
||||||
processFPItem( fp, fp->GraphicalItems()[ii] );
|
processFPItem( fp, fp->GraphicalItems()[ii] );
|
||||||
|
|
||||||
if( fp->GraphicalItems().size() || fp->Pads().size() || fp->Zones().size() )
|
if( fp->Fields().size()
|
||||||
|
|| fp->GraphicalItems().size()
|
||||||
|
|| fp->Pads().size()
|
||||||
|
|| fp->Zones().size() )
|
||||||
{
|
{
|
||||||
returnItems.push_back( fp );
|
returnItems.push_back( fp );
|
||||||
}
|
}
|
||||||
|
@ -1040,7 +1036,7 @@ int PCB_CONTROL::Paste( const TOOL_EVENT& aEvent )
|
||||||
cancelled = !placeBoardItems( &commit, pastedItems, true, true,
|
cancelled = !placeBoardItems( &commit, pastedItems, true, true,
|
||||||
mode == PASTE_MODE::UNIQUE_ANNOTATIONS );
|
mode == PASTE_MODE::UNIQUE_ANNOTATIONS );
|
||||||
}
|
}
|
||||||
else
|
else // isBoardEditor
|
||||||
{
|
{
|
||||||
if( mode == PASTE_MODE::REMOVE_ANNOTATIONS )
|
if( mode == PASTE_MODE::REMOVE_ANNOTATIONS )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue