summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2022-12-07 13:44:01 -0500
committerMiklos Vajna <vmiklos@collabora.com>2022-12-09 07:14:38 +0000
commit78b5195d8add0679263a5e08ba34be9b27637a65 (patch)
tree2581dfd9038c04a99f0a8c40ae626c543ab59399 /writerfilter
parent2d9a3f8137e82af4a419441b58f80c027eee51b1 (diff)
tdf#149240 docx content controls: round-trip showingPlcHdr better
ShowingPlaceHolder causes all the text in the control to be selected when the control gains the focus. Otherwise, just a cursor is placed at the click point. While round-tripping this attribute worked for inline SDTs, it was lost for block SDTs. But BlockSDTs are very easy to create. The MS templates are full of them. Also, these are boolean, but it could have a val=0 specified, in which case it is off, but we were importing it as on. Change-Id: I167afa935311a63bba408ecd489ae819485a5cb7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143818 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx20
1 files changed, 15 insertions, 5 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 93cb36cb8e55..4683ff445458 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -2828,11 +2828,6 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext )
m_pImpl->disableInteropGrabBag();
}
break;
- case NS_ooxml::LN_CT_SdtPr_showingPlcHdr:
- {
- m_pImpl->m_pSdtHelper->SetShowingPlcHdr();
- }
- break;
case NS_ooxml::LN_CT_SdtPr_dataBinding:
case NS_ooxml::LN_CT_SdtPr_equation:
case NS_ooxml::LN_CT_SdtPr_checkbox:
@@ -2844,11 +2839,18 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext )
case NS_ooxml::LN_CT_SdtPr_id:
case NS_ooxml::LN_CT_SdtPr_alias:
case NS_ooxml::LN_CT_SdtPlaceholder_docPart:
+ case NS_ooxml::LN_CT_SdtPr_showingPlcHdr:
case NS_ooxml::LN_CT_SdtPr_color:
case NS_ooxml::LN_CT_SdtPr_tag:
{
if (!m_pImpl->GetSdtStarts().empty())
{
+ if (nSprmId == NS_ooxml::LN_CT_SdtPr_showingPlcHdr)
+ {
+ if (nIntValue)
+ m_pImpl->m_pSdtHelper->SetShowingPlcHdr();
+ }
+
if (nSprmId == NS_ooxml::LN_CT_SdtPr_color)
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
@@ -2932,6 +2934,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext )
case NS_ooxml::LN_CT_SdtPr_id: sName = "ooxml:CT_SdtPr_id"; break;
case NS_ooxml::LN_CT_SdtPr_alias: sName = "ooxml:CT_SdtPr_alias"; break;
case NS_ooxml::LN_CT_SdtPlaceholder_docPart: sName = "ooxml:CT_SdtPlaceholder_docPart"; break;
+ case NS_ooxml::LN_CT_SdtPr_showingPlcHdr: sName = "ooxml:CT_SdtPr_showingPlcHdr"; break;
case NS_ooxml::LN_CT_SdtPr_color: sName = "ooxml:CT_SdtPr_color"; break;
default: assert(false);
};
@@ -2958,6 +2961,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext )
aValue.Value <<= sStringValue;
m_pImpl->m_pSdtHelper->appendToInteropGrabBag(aValue);
}
+ else if (nSprmId == NS_ooxml::LN_CT_SdtPr_showingPlcHdr)
+ {
+ beans::PropertyValue aValue;
+ aValue.Name = sName;
+ aValue.Value <<= bool(nIntValue);
+ m_pImpl->m_pSdtHelper->appendToInteropGrabBag(aValue);
+ }
else
m_pImpl->m_pSdtHelper->appendToInteropGrabBag(getInteropGrabBag());
m_pImpl->m_pSdtHelper->setOutsideAParagraph(m_pImpl->IsOutsideAParagraph());