PNS: Avoid flickering clearances on new items
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9773
This commit is contained in:
parent
63718323bc
commit
da458535c4
|
@ -88,6 +88,8 @@ public:
|
||||||
|
|
||||||
int ClearanceEpsilon() const { return m_clearanceEpsilon; }
|
int ClearanceEpsilon() const { return m_clearanceEpsilon; }
|
||||||
|
|
||||||
|
void ClearCacheForItem( const PNS::ITEM* aItem ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int holeRadius( const PNS::ITEM* aItem ) const;
|
int holeRadius( const PNS::ITEM* aItem ) const;
|
||||||
|
|
||||||
|
@ -294,6 +296,12 @@ bool PNS_PCBNEW_RULE_RESOLVER::QueryConstraint( PNS::CONSTRAINT_TYPE aType,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PNS_PCBNEW_RULE_RESOLVER::ClearCacheForItem( const PNS::ITEM* aItem )
|
||||||
|
{
|
||||||
|
m_clearanceCache.erase( std::make_pair( aItem, nullptr ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int PNS_PCBNEW_RULE_RESOLVER::Clearance( const PNS::ITEM* aA, const PNS::ITEM* aB )
|
int PNS_PCBNEW_RULE_RESOLVER::Clearance( const PNS::ITEM* aA, const PNS::ITEM* aB )
|
||||||
{
|
{
|
||||||
std::pair<const PNS::ITEM*, const PNS::ITEM*> key( aA, aB );
|
std::pair<const PNS::ITEM*, const PNS::ITEM*> key( aA, aB );
|
||||||
|
|
|
@ -94,6 +94,8 @@ public:
|
||||||
PNS::CONSTRAINT* aConstraint ) = 0;
|
PNS::CONSTRAINT* aConstraint ) = 0;
|
||||||
|
|
||||||
virtual wxString NetName( int aNet ) = 0;
|
virtual wxString NetName( int aNet ) = 0;
|
||||||
|
|
||||||
|
virtual void ClearCacheForItem( const ITEM* aItem ) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -548,6 +548,7 @@ void ROUTER::updateView( NODE* aNode, ITEM_SET& aCurrent, bool aDragging )
|
||||||
|
|
||||||
for( ITEM* item : added )
|
for( ITEM* item : added )
|
||||||
{
|
{
|
||||||
|
GetRuleResolver()->ClearCacheForItem( item );
|
||||||
int clearance = GetRuleResolver()->Clearance( item, nullptr );
|
int clearance = GetRuleResolver()->Clearance( item, nullptr );
|
||||||
m_iface->DisplayItem( item, clearance, aDragging );
|
m_iface->DisplayItem( item, clearance, aDragging );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue