summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper/DomainMapper_Impl.cxx
diff options
context:
space:
mode:
authorVasily Melenchuk <Vasily.Melenchuk@cib.de>2017-08-18 22:14:08 +0300
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2017-11-10 02:01:57 +0100
commiteaa9cf6a3069fba3d82c046f0041bfb537d9e648 (patch)
tree55806b023e2f7c380a877d0df6b0bd5bb53ad46e /writerfilter/source/dmapper/DomainMapper_Impl.cxx
parent7f603dd111afcc30eec8bbec97efc16ad8b4c4d1 (diff)
tdf#43017: Support for DOCX hyperlinks character properties
Here goes a bunch of related changes: 1. Create new character style based on current character properties 2. Apply created style to hyperlink object 3. Fixes to predefined style names usage in w:rPr 4. Disable style usage for hyperlinks in TOC: they will receive later anoter styles Change-Id: I1a228992eb7c1e259a6a811aa7f959debaae4f35 Reviewed-on: https://gerrit.libreoffice.org/41784 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'writerfilter/source/dmapper/DomainMapper_Impl.cxx')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx21
1 files changed, 21 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 823450f2aab8..9bc53f2f4b90 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1383,7 +1383,18 @@ 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);
+ }
}
CheckRedline( xTextRange );
@@ -3708,6 +3719,8 @@ void DomainMapper_Impl::CloseFieldCommand()
aFieldConversionMap.find(std::get<0>(field));
if(aIt != aFieldConversionMap.end())
{
+ pContext->SetFieldId(aIt->second.eFieldId);
+
bool bCreateEnhancedField = false;
uno::Reference< beans::XPropertySet > xFieldProperties;
bool bCreateField = true;
@@ -4753,6 +4766,14 @@ void DomainMapper_Impl::PopFieldContext()
xCrsrProperties->setPropertyValue("VisitedCharStyleName",uno::makeAny(sDisplayName));
xCrsrProperties->setPropertyValue("UnvisitedCharStyleName",uno::makeAny(sDisplayName));
}
+ else
+ {
+ if (!pContext->GetHyperlinkStyle().isEmpty())
+ {
+ xCrsrProperties->setPropertyValue("VisitedCharStyleName", uno::makeAny(pContext->GetHyperlinkStyle()));
+ xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", uno::makeAny(pContext->GetHyperlinkStyle()));
+ }
+ }
}
else if(m_bStartGenericField)
{