sw/qa/extras/ooxmlexport/data/tdf127116.odt |binary sw/qa/extras/ooxmlexport/ooxmlexport10.cxx | 5 ++++- sw/qa/extras/ooxmlexport/ooxmlexport13.cxx | 11 +++++++++++ sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx | 2 +- sw/source/filter/ww8/docxattributeoutput.cxx | 5 +++++ 5 files changed, 21 insertions(+), 2 deletions(-)
New commits: commit 79939168b47ae9c8089c93f88ed322dff67203fe Author: Tünde Tóth <tund...@gmail.com> AuthorDate: Thu Aug 29 11:54:22 2019 +0200 Commit: László Németh <nem...@numbertext.org> CommitDate: Wed Sep 4 12:34:36 2019 +0200 tdf#127116 DOCX export: fix hyperlink to bookmark target with spaces Conversion of spaces to underline characters was only in bookmark names, but not in the URLs using these bookmark names. Change-Id: Idb0d9945c79139d8a935ffcf6a3b29a9298c2270 Reviewed-on: https://gerrit.libreoffice.org/78267 Reviewed-by: László Németh <nem...@numbertext.org> Tested-by: László Németh <nem...@numbertext.org> diff --git a/sw/qa/extras/ooxmlexport/data/tdf127116.odt b/sw/qa/extras/ooxmlexport/data/tdf127116.odt new file mode 100644 index 000000000000..2825b34c078f Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf127116.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx index a57b1ad39f96..babff3bbec07 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx @@ -128,8 +128,11 @@ DECLARE_OOXMLEXPORT_TEST(testSmartart, "smartart.docx") DECLARE_OOXMLEXPORT_TEST(testFdo69548, "fdo69548.docx") { + if (!mbExported) + return; + // The problem was that the last space in target URL was removed - CPPUNIT_ASSERT_EQUAL(OUString("#this is a bookmark"), getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL")); + CPPUNIT_ASSERT_EQUAL(OUString("#this_is_a_bookmark"), getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL")); } DECLARE_OOXMLEXPORT_TEST(testWpsOnly, "wps-only.docx") diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx index 295177486228..ed6bcc309c93 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx @@ -640,6 +640,17 @@ DECLARE_OOXMLEXPORT_TEST(tdf118169, "tdf118169.docx") CPPUNIT_ASSERT_EQUAL(OUString(u"őőőőőőőőőőőűűűű"), getProperty<OUString>(xPropertySet, "Label")); } +DECLARE_OOXMLEXPORT_TEST(testTdf127116, "tdf127116.odt") +{ + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; + + OUString bookmarkName = getXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:bookmarkStart", "name"); + OUString anchor = getXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:hyperlink", "anchor"); + CPPUNIT_ASSERT_EQUAL(anchor, bookmarkName); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx index d716ad535f84..e269a3bfba6e 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx @@ -651,7 +651,7 @@ DECLARE_OOXMLEXPORT_TEST(testToxmarkHyperlink, "toxmarkhyperlink.fodt") DECLARE_OOXMLEXPORT_TEST(testOO34469, "ooo34469-1.odt") { if (xmlDocPtr pXmlDoc = parseExport()) - assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:hyperlink[1]", "anchor", "2.9.2.Creating New files|outline"); + assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:hyperlink[1]", "anchor", "2.9.2.Creating_New_files|outline"); } DECLARE_OOXMLEXPORT_TEST(testOO39845, "ooo39845-7.odt") diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 0a0a8a94badb..debba8ae9ae1 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -2914,6 +2914,11 @@ bool DocxAttributeOutput::StartURL( const OUString& rUrl, const OUString& rTarge } } } + if (sMark.indexOf(' ') != -1 && !sMark.endsWith("|table") && !sMark.endsWith("|frame") && !sMark.endsWith("|graphic") && !sMark.endsWith("|ole") && !sMark.endsWith("|region")) + { + // Spaces are prohibited in bookmark name. + sMark = sMark.replace(' ', '_'); + } m_pHyperlinkAttrList->add( FSNS( XML_w, XML_anchor ), OUStringToOString( sMark, RTL_TEXTENCODING_UTF8 ).getStr( ) ); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits