Don't drag multiple coincident vias
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17915
This commit is contained in:
parent
3f704cb1f1
commit
7a3db2d176
|
@ -196,6 +196,8 @@ const ITEM_SET DRAGGER::findViaFanoutByHandle ( NODE *aNode, const VIA_HANDLE& h
|
||||||
if( !jt )
|
if( !jt )
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
|
bool foundVia = false;
|
||||||
|
|
||||||
for( ITEM* item : jt->LinkList() )
|
for( ITEM* item : jt->LinkList() )
|
||||||
{
|
{
|
||||||
if( item->OfKind( ITEM::SEGMENT_T | ITEM::ARC_T ) )
|
if( item->OfKind( ITEM::SEGMENT_T | ITEM::ARC_T ) )
|
||||||
|
@ -211,7 +213,11 @@ const ITEM_SET DRAGGER::findViaFanoutByHandle ( NODE *aNode, const VIA_HANDLE& h
|
||||||
}
|
}
|
||||||
else if( item->OfKind( ITEM::VIA_T ) )
|
else if( item->OfKind( ITEM::VIA_T ) )
|
||||||
{
|
{
|
||||||
rv.Add( item );
|
if( !foundVia )
|
||||||
|
{
|
||||||
|
rv.Add( item );
|
||||||
|
foundVia = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,8 @@ int INDEX::Query( const ITEM* aItem, int aMinDistance, Visitor& aVisitor ) const
|
||||||
{
|
{
|
||||||
int total = 0;
|
int total = 0;
|
||||||
|
|
||||||
|
wxCHECK( aItem->Kind() != ITEM::INVALID_T, 0 );
|
||||||
|
|
||||||
const LAYER_RANGE& layers = aItem->Layers();
|
const LAYER_RANGE& layers = aItem->Layers();
|
||||||
|
|
||||||
for( int i = layers.Start(); i <= layers.End(); ++i )
|
for( int i = layers.Start(); i <= layers.End(); ++i )
|
||||||
|
|
|
@ -99,6 +99,7 @@ public:
|
||||||
///< Supported item types
|
///< Supported item types
|
||||||
enum PnsKind
|
enum PnsKind
|
||||||
{
|
{
|
||||||
|
INVALID_T = 0,
|
||||||
SOLID_T = 1,
|
SOLID_T = 1,
|
||||||
LINE_T = 2,
|
LINE_T = 2,
|
||||||
JOINT_T = 4,
|
JOINT_T = 4,
|
||||||
|
|
Loading…
Reference in New Issue