summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2011-02-24 21:40:15 +0000
committerNoel Power <noel.power@novell.com>2011-02-24 21:41:12 +0000
commit5ceb24cb0c1d1f109d7e07f53edc6c5c2f3fac20 (patch)
tree662c86cfeb3e7a28eab5aa4bd4bbaa5942923e3e /writerfilter
parentf9c94966c92800ede3d7c7b75722167f1c9c1f7f (diff)
fix for fdo#34663
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx4
-rw-r--r--writerfilter/source/dmapper/FormControlHelper.cxx42
-rw-r--r--writerfilter/source/dmapper/FormControlHelper.hxx2
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;