summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper
diff options
context:
space:
mode:
authorTünde Tóth <tundeth@gmail.com>2019-10-08 13:58:44 +0200
committerLászló Németh <nemeth@numbertext.org>2019-10-12 10:00:20 +0200
commit576611895e51186d38ddefa10ed8d66075d9de37 (patch)
treeaa26c1878238bb6802cb403d9f68e98548bdaa1c /writerfilter/source/dmapper
parentd416250f4f1766e2d596ea3feef6a94b7adf29f4 (diff)
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 <nemeth@numbertext.org> Tested-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'writerfilter/source/dmapper')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx24
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx3
2 files changed, 12 insertions, 15 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index f69b53fbf2fe..c2d087fe4d59 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1784,15 +1784,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);
- }
-
#if !defined(MACOSX) // TODO: check layout differences and support all platforms, if needed
sal_Int32 nPos;
OUString sDoubleSpace(" ");
@@ -5385,10 +5376,19 @@ void DomainMapper_Impl::PopFieldContext()
}
else
{
- if (!pContext->GetHyperlinkStyle().isEmpty())
+ uno::Any aAny = xCrsrProperties->getPropertyValue("CharStyleName");
+ OUString charStyle;
+ if (css::uno::fromAny(aAny, &charStyle))
{
- xCrsrProperties->setPropertyValue("VisitedCharStyleName", uno::makeAny(pContext->GetHyperlinkStyle()));
- xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", uno::makeAny(pContext->GetHyperlinkStyle()));
+ if(!charStyle.isEmpty() && charStyle.equalsIgnoreAsciiCase("Internet Link"))
+ {
+ xCrsrProperties->setPropertyValue("CharStyleName", uno::makeAny(OUString("Default Style")));
+ }
+ else
+ {
+ xCrsrProperties->setPropertyValue("VisitedCharStyleName", aAny);
+ xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", aAny);
+ }
}
}
}
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index fb4fcaf03349..6f5aaedd1fed 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -149,7 +149,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;
@@ -194,8 +193,6 @@ public:
const OUString& GetHyperlinkURL() const { return m_sHyperlinkURL; }
void SetHyperlinkTarget(const OUString& rTarget) { m_sHyperlinkTarget = rTarget; }
const OUString& GetHyperlinkTarget() const { return m_sHyperlinkTarget; }
- void SetHyperlinkStyle(const OUString& rStyle) { m_sHyperlinkStyle = rStyle; }
- const OUString& GetHyperlinkStyle() const { return m_sHyperlinkStyle; }
void setFFDataHandler(FFDataHandler::Pointer_t pFFDataHandler) { m_pFFDataHandler = pFFDataHandler; }
const FFDataHandler::Pointer_t& getFFDataHandler() const { return m_pFFDataHandler; }