summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper/DomainMapper_Impl.cxx
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2024-03-08 14:23:08 +0100
committerXisco Fauli <xiscofauli@libreoffice.org>2024-03-08 21:09:31 +0100
commitb56678ae967bb1e09b52930a0b1d59a5e68bb7be (patch)
treed056f7ef86972940ba70a08e1b08e06f5bb1c2e0 /writerfilter/source/dmapper/DomainMapper_Impl.cxx
parent61b1d3a17ff784b7c79a92cbe069a90ce4932535 (diff)
tdf#142133: partially revert 576611895e5
if 'Internet Link' character style doens't exist then apply the hyperlink style This also reverts 023285158bde72dcd73b965ce205cf8550e7a5e2 "tdf#128504 save DOCX as ODT: don't color not highlighted hyperlinks" which is no longer necessary Change-Id: Id100af5fddb10745af9d56c0ba75cb2366ecbe55 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164576 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'writerfilter/source/dmapper/DomainMapper_Impl.cxx')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx23
1 files changed, 14 insertions, 9 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index bbdfbd35c34a..f4943c60c88c 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -3304,6 +3304,15 @@ void DomainMapper_Impl::MergeAtContentImageRedlineWithNext(const css::uno::Refer
}
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 = 0;
OUString sFontName;
@@ -8787,25 +8796,21 @@ void DomainMapper_Impl::PopFieldContext()
xCrsrProperties->setPropertyValue("VisitedCharStyleName",uno::Any(sDisplayName));
xCrsrProperties->setPropertyValue("UnvisitedCharStyleName",uno::Any(sDisplayName));
}
- else
+ else if (!pContext->GetHyperlinkStyle().isEmpty())
{
uno::Any aAny = xCrsrProperties->getPropertyValue("CharStyleName");
OUString charStyle;
if (css::uno::fromAny(aAny, &charStyle))
{
- if (charStyle.isEmpty())
- {
- xCrsrProperties->setPropertyValue("VisitedCharStyleName", uno::Any(OUString("Default Style")));
- xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", uno::Any(OUString("Default Style")));
- }
- else if (charStyle.equalsIgnoreAsciiCase("Internet Link"))
+ if (!charStyle.isEmpty() && charStyle.equalsIgnoreAsciiCase("Internet Link"))
{
xCrsrProperties->setPropertyValue("CharStyleName", uno::Any(OUString("Default Style")));
}
else
{
- xCrsrProperties->setPropertyValue("VisitedCharStyleName", aAny);
- xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", aAny);
+ xCrsrProperties->setPropertyValue("VisitedCharStyleName", uno::Any(pContext->GetHyperlinkStyle()));
+ xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", uno::Any(pContext->GetHyperlinkStyle()));
+
}
}
}