Fix zone cross-probing from DRC dialog.

(cherry picked from commit aa68a3817a)
This commit is contained in:
Alex Shvartzkop 2024-03-08 21:23:12 +03:00
parent b61f6c35c7
commit ed89827908
1 changed files with 19 additions and 4 deletions

View File

@ -486,6 +486,8 @@ void DIALOG_DRC::OnDRCItemSelected( wxDataViewEvent& aEvent )
if( item->Type() == PCB_ZONE_T )
{
m_frame->FocusOnItem( item, principalLayer );
m_frame->GetBoard()->GetConnectivity()->RunOnUnconnectedEdges(
[&]( CN_EDGE& edge )
{
@ -500,10 +502,23 @@ void DIALOG_DRC::OnDRCItemSelected( wxDataViewEvent& aEvent )
if( edge.GetSourceNode()->Parent() == a
&& edge.GetTargetNode()->Parent() == b )
{
if( item == a )
m_frame->FocusOnLocation( edge.GetSourcePos() );
VECTOR2I focusPos;
if( item == a && item == b )
{
focusPos = ( node->m_Type == RC_TREE_NODE::MAIN_ITEM )
? edge.GetSourcePos()
: edge.GetTargetPos();
}
else
m_frame->FocusOnLocation( edge.GetTargetPos() );
{
focusPos = ( item == edge.GetSourceNode()->Parent() )
? edge.GetSourcePos()
: edge.GetTargetPos();
}
m_frame->FocusOnLocation( focusPos );
m_frame->RefreshCanvas();
return false;
}