sw/qa/extras/ooxmlexport/data/tdf127741.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport13.cxx | 10 +++++++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 28 +++++++++++----------- writerfilter/source/dmapper/DomainMapper_Impl.hxx | 3 -- 4 files changed, 24 insertions(+), 17 deletions(-)
New commits: commit ccb38977541c304ff08ebe1a1b24c512ab670acf Author: Tünde Tóth <[email protected]> AuthorDate: Tue Oct 8 13:58:44 2019 +0200 Commit: Xisco Faulí <[email protected]> CommitDate: Tue Oct 22 13:44:16 2019 +0200 tdf#127741 DOCX import: format hyperlink with Default character style according to correct hyperlink handling, avoiding various editing and layout problems; "sticky" and not easily removable character style around the hyperlink and multiple blue hyperlink colors. Set also Visited/Unvisited link character styles when the style of the hyperlink is not the requested "Internet Link". Change-Id: I3d7ba8dd225c693cc9f521b37767cf1e1e09d7c0 Reviewed-on: https://gerrit.libreoffice.org/80449 Reviewed-by: László Németh <[email protected]> Tested-by: László Németh <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/80907 Tested-by: Jenkins Reviewed-by: Xisco Faulí <[email protected]> diff --git a/sw/qa/extras/ooxmlexport/data/tdf127741.docx b/sw/qa/extras/ooxmlexport/data/tdf127741.docx new file mode 100644 index 000000000000..1bedb9ade516 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf127741.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx index 9a5c10f01748..8539548fc22c 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx @@ -458,6 +458,16 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf121663, "tdf121663.docx") assertXPath(pXmlDoc, "//w:lnNumType", "distance", "283"); } +DECLARE_OOXMLEXPORT_TEST(testTdf127741, "tdf127741.docx") +{ + uno::Reference<text::XTextRange> xPara = getParagraph(1); + uno::Reference<beans::XPropertySet> xRun(getRun(xPara,1), uno::UNO_QUERY); + OUString unVisitedStyleName = getProperty<OUString>(xRun, "UnvisitedCharStyleName"); + CPPUNIT_ASSERT(unVisitedStyleName.equalsIgnoreAsciiCase("Internet Link")); + OUString visitedStyleName = getProperty<OUString>(xRun, "VisitedCharStyleName"); + CPPUNIT_ASSERT(visitedStyleName.equalsIgnoreAsciiCase("Visited Internet Link")); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index d9e93f8a848b..a32991c6a4cc 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1678,15 +1678,6 @@ void DomainMapper_Impl::appendTextPortion( const OUString& rString, const Proper } else { - if (IsOpenField() && GetTopFieldContext()->GetFieldId() == FIELD_HYPERLINK) - { - // It is content of hyperlink field. We need to create and remember - // character style for later applying to hyperlink - PropertyValueVector_t aProps = comphelper::sequenceToContainer< PropertyValueVector_t >(GetTopContext()->GetPropertyValues()); - OUString sHyperlinkStyleName = GetStyleSheetTable()->getOrCreateCharStyle(aProps, /*bAlwaysCreate=*/false); - GetTopFieldContext()->SetHyperlinkStyle(sHyperlinkStyleName); - } - xTextRange = xTextAppend->appendTextPortion(rString, aValues); } } @@ -5241,11 +5232,20 @@ void DomainMapper_Impl::PopFieldContext() } else { - if (!pContext->GetHyperlinkStyle().isEmpty()) - { - xCrsrProperties->setPropertyValue("VisitedCharStyleName", uno::makeAny(pContext->GetHyperlinkStyle())); - xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", uno::makeAny(pContext->GetHyperlinkStyle())); - } + uno::Any aAny = xCrsrProperties->getPropertyValue("CharStyleName"); + OUString charStyle; + if (css::uno::fromAny(aAny, &charStyle)) + { + if(!charStyle.isEmpty() && charStyle.equalsIgnoreAsciiCase("Internet Link")) + { + xCrsrProperties->setPropertyValue("CharStyleName", uno::makeAny(OUString("Default Style"))); + } + else + { + xCrsrProperties->setPropertyValue("VisitedCharStyleName", aAny); + xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", aAny); + } + } } } else if(m_bStartGenericField) diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index e5bd1efdbe85..3e8a2236da92 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -150,7 +150,6 @@ class FieldContext : public virtual SvRefBase OUString m_sHyperlinkURL; /// A frame for the hyperlink when one exists. OUString m_sHyperlinkTarget; - OUString m_sHyperlinkStyle; FFDataHandler::Pointer_t m_pFFDataHandler; FormControlHelper::Pointer_t m_pFormControlHelper; @@ -195,8 +194,6 @@ public: const OUString& GetHyperlinkURL() { return m_sHyperlinkURL; } void SetHyperlinkTarget(const OUString& rTarget) { m_sHyperlinkTarget = rTarget; } const OUString& GetHyperlinkTarget() { return m_sHyperlinkTarget; } - void SetHyperlinkStyle(const OUString& rStyle) { m_sHyperlinkStyle = rStyle; } - const OUString& GetHyperlinkStyle() { return m_sHyperlinkStyle; } void setFFDataHandler(FFDataHandler::Pointer_t pFFDataHandler) { m_pFFDataHandler = pFFDataHandler; } const FFDataHandler::Pointer_t& getFFDataHandler() const { return m_pFFDataHandler; } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
