diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2024-03-08 14:23:08 +0100 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2024-03-08 21:09:31 +0100 |
commit | b56678ae967bb1e09b52930a0b1d59a5e68bb7be (patch) | |
tree | d056f7ef86972940ba70a08e1b08e06f5bb1c2e0 /writerfilter/source/dmapper/DomainMapper_Impl.cxx | |
parent | 61b1d3a17ff784b7c79a92cbe069a90ce4932535 (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.cxx | 23 |
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())); + } } } |