diff options
author | Noel Power <noel.power@novell.com> | 2011-02-24 21:40:15 +0000 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2011-02-24 21:41:12 +0000 |
commit | 5ceb24cb0c1d1f109d7e07f53edc6c5c2f3fac20 (patch) | |
tree | 662c86cfeb3e7a28eab5aa4bd4bbaa5942923e3e /writerfilter | |
parent | f9c94966c92800ede3d7c7b75722167f1c9c1f7f (diff) |
fix for fdo#34663
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/dmapper/FormControlHelper.cxx | 42 | ||||
-rw-r--r-- | writerfilter/source/dmapper/FormControlHelper.hxx | 2 |
3 files changed, 25 insertions, 23 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 3e57a568c27b..7061fe5a83af 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -138,7 +138,7 @@ void lcl_handleDropdownField( const uno::Reference< beans::XPropertySet >& rxFie void lcl_handleTextField( const uno::Reference< beans::XPropertySet >& rxFieldProps, FFDataHandler::Pointer_t pFFDataHandler, PropertyNameSupplier& rPropNameSupplier ) { - if ( rxFieldProps.is() ) + if ( rxFieldProps.is() && pFFDataHandler ) { rxFieldProps->setPropertyValue (rPropNameSupplier.GetName(PROP_HINT), @@ -2897,7 +2897,7 @@ void DomainMapper_Impl::PopFieldContext() else { FormControlHelper::Pointer_t pFormControlHelper(pContext->getFormControlHelper()); - if (pFormControlHelper.get() != NULL) + if (pFormControlHelper.get() != NULL && pFormControlHelper->hasFFDataHandler() ) { uno::Reference< text::XFormField > xFormField( pContext->GetFormField() ); xToInsert.set(xFormField, uno::UNO_QUERY); diff --git a/writerfilter/source/dmapper/FormControlHelper.cxx b/writerfilter/source/dmapper/FormControlHelper.cxx index 1f7a5b5029aa..d562971f0965 100644 --- a/writerfilter/source/dmapper/FormControlHelper.cxx +++ b/writerfilter/source/dmapper/FormControlHelper.cxx @@ -223,12 +223,14 @@ bool FormControlHelper::createCheckbox(uno::Reference<text::XTextRange> xTextRan bool FormControlHelper::processField(uno::Reference<text::XFormField> xFormField) { + bool bRes = true; uno::Reference<container::XNameContainer> xNameCont = xFormField->getParameters(); - if (m_pImpl->m_eFieldId == FIELD_FORMTEXT ) + if ( m_pFFData && xNameCont.is() ) { - xFormField->setFieldType( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMTEXT))); - if ( xNameCont.is() ) + + if (m_pImpl->m_eFieldId == FIELD_FORMTEXT ) { + xFormField->setFieldType( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMTEXT))); if ( m_pFFData->getName().getLength() ) { if ( xNameCont->hasByName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMTEXT_NAME)) ) ) @@ -244,22 +246,19 @@ bool FormControlHelper::processField(uno::Reference<text::XFormField> xFormField xNameCont->insertByName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMTEXT_DEFAULT)), uno::makeAny( m_pFFData->getTextDefault() ) ); } } - } - else if (m_pImpl->m_eFieldId == FIELD_FORMCHECKBOX ) - { - xFormField->setFieldType( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMCHECKBOX))); - uno::Reference<beans::XPropertySet> xPropSet(xFormField, uno::UNO_QUERY); - uno::Any aAny; - aAny <<= m_pFFData->getCheckboxChecked(); - if ( xPropSet.is() ) - xPropSet->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Checked")), aAny); - rtl::OUString sName; - } - else if (m_pImpl->m_eFieldId == FIELD_FORMDROPDOWN ) - { - xFormField->setFieldType( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN))); - if ( xNameCont.is() ) + else if (m_pImpl->m_eFieldId == FIELD_FORMCHECKBOX ) { + xFormField->setFieldType( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMCHECKBOX))); + uno::Reference<beans::XPropertySet> xPropSet(xFormField, uno::UNO_QUERY); + uno::Any aAny; + aAny <<= m_pFFData->getCheckboxChecked(); + if ( xPropSet.is() ) + xPropSet->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Checked")), aAny); + rtl::OUString sName; + } + else if (m_pImpl->m_eFieldId == FIELD_FORMDROPDOWN ) + { + xFormField->setFieldType( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN))); uno::Sequence< rtl::OUString > sItems; sItems.realloc( m_pFFData->getDropDownEntries().size() ); ::std::copy( m_pFFData->getDropDownEntries().begin(), m_pFFData->getDropDownEntries().end(), ::comphelper::stl_begin(sItems)); @@ -281,13 +280,16 @@ bool FormControlHelper::processField(uno::Reference<text::XFormField> xFormField } } } - return false; + else + bRes = false; + return bRes; } bool FormControlHelper::insertControl(uno::Reference<text::XTextRange> xTextRange) { bool bCreated = false; - + if ( !m_pFFData ) + return false; uno::Reference<container::XNameContainer> xFormCompsByName(m_pImpl->getForm(), uno::UNO_QUERY); uno::Reference<container::XIndexContainer> xFormComps(m_pImpl->getFormComps()); if (! xFormComps.is()) diff --git a/writerfilter/source/dmapper/FormControlHelper.hxx b/writerfilter/source/dmapper/FormControlHelper.hxx index d19569ff19ec..41e4f0df3204 100644 --- a/writerfilter/source/dmapper/FormControlHelper.hxx +++ b/writerfilter/source/dmapper/FormControlHelper.hxx @@ -50,7 +50,7 @@ public: bool insertControl(uno::Reference<text::XTextRange> xTextRange); bool processField(uno::Reference<text::XFormField> xFormField); - + bool hasFFDataHandler() { return (m_pFFData != NULL); } private: FFDataHandler::Pointer_t m_pFFData; struct FormControlHelper_Impl; |