diff options
author | Justin Luth <justin.luth@collabora.com> | 2022-12-07 13:44:01 -0500 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-12-09 07:14:38 +0000 |
commit | 78b5195d8add0679263a5e08ba34be9b27637a65 (patch) | |
tree | 2581dfd9038c04a99f0a8c40ae626c543ab59399 /writerfilter | |
parent | 2d9a3f8137e82af4a419441b58f80c027eee51b1 (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.cxx | 20 |
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()); |