From f4a5404e0ab3ff177f22d78b3d60dacbf9a30344 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sat, 15 Mar 2025 19:31:25 +0000 Subject: [PATCH] Resolve variables in hrefs. Fixes https://gitlab.com/kicad/code/kicad/-/issues/20340 --- common/plotters/PDF_plotter.cpp | 7 +++++-- eeschema/tools/sch_navigate_tool.cpp | 4 +++- eeschema/tools/sch_navigate_tool.h | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/common/plotters/PDF_plotter.cpp b/common/plotters/PDF_plotter.cpp index 500f60aae0..2f7eaa200e 100644 --- a/common/plotters/PDF_plotter.cpp +++ b/common/plotters/PDF_plotter.cpp @@ -1296,8 +1296,8 @@ bool PDF_PLOTTER::EndPlot() for( const auto& [ linkHandle, linkPair ] : m_hyperlinkHandles ) { - const BOX2D& box = linkPair.first; - const wxString& url = linkPair.second; + BOX2D box = linkPair.first; + wxString url = linkPair.second; startPdfObject( linkHandle ); @@ -1337,6 +1337,9 @@ bool PDF_PLOTTER::EndPlot() } else { + if( m_project ) + url = ResolveUriByEnvVars( url, m_project ); + fmt::print( m_outputFile, "/A << /Type /Action /S /URI /URI {} >>\n" ">>\n", diff --git a/eeschema/tools/sch_navigate_tool.cpp b/eeschema/tools/sch_navigate_tool.cpp index 936fe970fb..76e3079aa0 100644 --- a/eeschema/tools/sch_navigate_tool.cpp +++ b/eeschema/tools/sch_navigate_tool.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include "eda_doc.h" @@ -74,9 +75,10 @@ void SCH_NAVIGATE_TOOL::CleanHistory() } -void SCH_NAVIGATE_TOOL::HypertextCommand( const wxString& href ) +void SCH_NAVIGATE_TOOL::HypertextCommand( const wxString& aHref ) { wxString destPage; + wxString href = ResolveUriByEnvVars( aHref, &m_frame->Prj() ); if( href == SCH_NAVIGATE_TOOL::g_BackLink ) { diff --git a/eeschema/tools/sch_navigate_tool.h b/eeschema/tools/sch_navigate_tool.h index 6cacfc45e1..ebc00f8792 100644 --- a/eeschema/tools/sch_navigate_tool.h +++ b/eeschema/tools/sch_navigate_tool.h @@ -65,7 +65,7 @@ public: ///< Navigate to next sheet by numeric sheet number int Next( const TOOL_EVENT& aEvent ); - void HypertextCommand( const wxString& href ); + void HypertextCommand( const wxString& aHref ); bool CanGoBack(); bool CanGoForward();