From aec36495244109afdb028a40c4d2d5d37d9085a8 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Wed, 22 Apr 2020 23:34:49 +0100 Subject: [PATCH] Add FocusOnLocation for second items in ERC markers. Fixes: lp:4237 * https://bugs.launchpad.net/kicad/+bug/4237 --- eeschema/dialog_erc_listbox.h | 5 ++++- eeschema/dialogs/dialog_erc.cpp | 21 +++++++++++++++++++-- eeschema/drc_erc_item.cpp | 8 ++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/eeschema/dialog_erc_listbox.h b/eeschema/dialog_erc_listbox.h index 4e10704aa8..317ed90051 100644 --- a/eeschema/dialog_erc_listbox.h +++ b/eeschema/dialog_erc_listbox.h @@ -83,7 +83,10 @@ public: { href.Printf( wxT( "href='%d'" ), ii ); marker_text = m_MarkerListReferences[ii]->GetReporter().ShowHtml( aUnits ); - marker_text.Replace( wxT( "href=''"), href ); + marker_text.Replace( wxT( "href=''"), href, false ); + + href.Printf( wxT( "href='%d'" ), -ii ); + marker_text.Replace( wxT( "href=''"), href, false ); htmlpage += marker_text; } diff --git a/eeschema/dialogs/dialog_erc.cpp b/eeschema/dialogs/dialog_erc.cpp index aaf7555f8b..753578a2db 100644 --- a/eeschema/dialogs/dialog_erc.cpp +++ b/eeschema/dialogs/dialog_erc.cpp @@ -213,10 +213,17 @@ void DIALOG_ERC::OnLeftClickMarkersList( wxHtmlLinkEvent& event ) m_lastMarkerFound = NULL; long index; + bool secondItem = false; if( !link.ToLong( &index ) ) return; + if( index < 0 ) + { + secondItem = true; + index = -index; + } + const SCH_MARKER* marker = m_MarkersList->GetItem( index ); if( marker == NULL ) @@ -262,8 +269,18 @@ void DIALOG_ERC::OnLeftClickMarkersList( wxHtmlLinkEvent& event ) } m_lastMarkerFound = marker; - m_parent->FocusOnLocation( marker->m_Pos, false, true ); - m_parent->SetCrossHairPosition( marker->m_Pos ); + + if( secondItem ) + { + m_parent->FocusOnLocation( marker->GetReporter().GetPointB() ); + m_parent->SetCrossHairPosition( marker->GetReporter().GetPointB() ); + } + else + { + m_parent->FocusOnLocation( marker->m_Pos, false, true ); + m_parent->SetCrossHairPosition( marker->m_Pos ); + } + RedrawDrawPanel(); } diff --git a/eeschema/drc_erc_item.cpp b/eeschema/drc_erc_item.cpp index f9460a7c8f..b859f3bc25 100644 --- a/eeschema/drc_erc_item.cpp +++ b/eeschema/drc_erc_item.cpp @@ -104,17 +104,21 @@ wxString DRC_ITEM::ShowHtml( EDA_UNITS_T aUnits ) const // an html fragment for the entire message in the listbox. feel free // to add color if you want: - return wxString::Format( "

%s
   %s: %s
   %s: %s", + return wxString::Format( "

%s
" + "   %s: %s
" + "   %s: %s", errText, hrefColour.GetAsString( wxC2S_HTML_SYNTAX ), ShowCoord( aUnits, m_MainPosition ), mainText, + hrefColour.GetAsString( wxC2S_HTML_SYNTAX ), ShowCoord( aUnits, m_AuxiliaryPosition ), auxText ); } else { - return wxString::Format( "

%s
   %s: %s", + return wxString::Format( "

%s
" + "   %s: %s", errText, hrefColour.GetAsString( wxC2S_HTML_SYNTAX ), ShowCoord( aUnits, m_MainPosition ),