sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 6 ++++++ writerfilter/source/dmapper/DomainMapper.cxx | 7 +++++-- writerfilter/source/dmapper/DomainMapper.hxx | 4 ++++ writerfilter/source/dmapper/OLEHandler.cxx | 3 +++ 4 files changed, 18 insertions(+), 2 deletions(-)
New commits: commit 8f8d6bee47b5c41ef551e18d2f9d117d82f01e3f Author: Justin Luth <justin_l...@sil.org> AuthorDate: Mon Oct 29 08:01:14 2018 +0300 Commit: Justin Luth <justin_l...@sil.org> CommitDate: Tue Nov 6 07:19:09 2018 +0100 tdf#118166 writerfilter: no design mode if ole controls exist ...just like sdt controls already turned off design mode. I'm not sure why design mode wasn't entirely turned off right from the start, but I don't want to do that now because forms are becoming more prominent in Writer. If design mode is ALWAYS turned off for .docx files, then the workflow will be different for *new* forms, since writer defaults to on. Change-Id: I91c771f1ebd5e640da8067d38cb06076d8c50d5a Reviewed-on: https://gerrit.libreoffice.org/62491 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_l...@sil.org> diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index 750a3cc24e07..e396ac0bea0b 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -26,6 +26,7 @@ #include <com/sun/star/text/RelOrientation.hpp> #include <com/sun/star/text/VertOrientation.hpp> #include <com/sun/star/text/WrapTextMode.hpp> +#include <com/sun/star/view/XFormLayerAccess.hpp> #include <com/sun/star/view/XViewSettingsSupplier.hpp> #include <com/sun/star/view/XSelectionSupplier.hpp> #include <com/sun/star/style/LineSpacing.hpp> @@ -976,6 +977,11 @@ DECLARE_OOXMLEXPORT_TEST( testActiveXTextfield, "activex_textbox.docx" ) // Check textfield is single-line CPPUNIT_ASSERT_EQUAL( false, getProperty<bool>(xPropertySet2, "MultiLine") ); + + // Don't open in design mode when form controls exist + uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY); + uno::Reference<view::XFormLayerAccess> xFormLayerAccess(xModel->getCurrentController(), uno::UNO_QUERY); + CPPUNIT_ASSERT( !xFormLayerAccess->isFormDesignMode() ); } DECLARE_OOXMLEXPORT_TEST( testActiveXCheckbox, "activex_checkbox.docx" ) diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index fce5cfe28b49..7d802249b2f4 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -106,6 +106,7 @@ DomainMapper::DomainMapper( const uno::Reference< uno::XComponentContext >& xCon LoggedStream("DomainMapper"), m_pImpl(new DomainMapper_Impl(*this, xContext, xModel, eDocumentType, rMediaDesc)), mbIsSplitPara(false) + ,mbHasControls(false) { // #i24363# tab stops relative to indent m_pImpl->SetDocumentSettingsProperty( @@ -193,12 +194,14 @@ DomainMapper::~DomainMapper() xEnumeration->nextElement(); } } - if( nIndexes || m_pImpl->m_pSdtHelper->hasElements()) + + mbHasControls |= m_pImpl->m_pSdtHelper->hasElements(); + if ( nIndexes || mbHasControls ) { //index update has to wait until first view is created uno::Reference< document::XEventBroadcaster > xBroadcaster(xIndexesSupplier, uno::UNO_QUERY); if (xBroadcaster.is()) - xBroadcaster->addEventListener(uno::Reference< document::XEventListener >(new ModelEventListener(nIndexes, m_pImpl->m_pSdtHelper->hasElements()))); + xBroadcaster->addEventListener(uno::Reference< document::XEventListener >(new ModelEventListener(nIndexes, mbHasControls))); } diff --git a/writerfilter/source/dmapper/DomainMapper.hxx b/writerfilter/source/dmapper/DomainMapper.hxx index b245bb000228..e6b082cfcd47 100644 --- a/writerfilter/source/dmapper/DomainMapper.hxx +++ b/writerfilter/source/dmapper/DomainMapper.hxx @@ -110,6 +110,9 @@ public: bool IsInHeaderFooter() const; bool IsInTable() const; bool IsStyleSheetImport() const; + + void hasControls( const bool bSet ) { mbHasControls = bSet; } + /** @see DomainMapper_Impl::processDeferredCharacterProperties() */ @@ -164,6 +167,7 @@ private: static css::style::TabAlign getTabAlignFromValue(const sal_Int32 nIntValue); static sal_Unicode getFillCharFromValue(const sal_Int32 nIntValue); bool mbIsSplitPara; + bool mbHasControls; std::unique_ptr< GraphicZOrderHelper > zOrderHelper; std::unique_ptr<GraphicNamingHelper> m_pGraphicNamingHelper; OUString m_sGlossaryEntryName; diff --git a/writerfilter/source/dmapper/OLEHandler.cxx b/writerfilter/source/dmapper/OLEHandler.cxx index 8ebf88c7c6f2..dee9ceb22ae1 100644 --- a/writerfilter/source/dmapper/OLEHandler.cxx +++ b/writerfilter/source/dmapper/OLEHandler.cxx @@ -106,7 +106,10 @@ void OLEHandler::lcl_attribute(Id rName, Value & rVal) // Control shape is handled on a different code path uno::Reference< lang::XServiceInfo > xSInfo( xTempShape, uno::UNO_QUERY_THROW ); if(xSInfo->supportsService("com.sun.star.drawing.ControlShape")) + { + m_rDomainMapper.hasControls(true); break; + } if( xTempShape.is() ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits