summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2019-03-09 14:44:50 +0100
committerAndras Timar <andras.timar@collabora.com>2019-03-18 10:16:12 +0100
commitfbb148af3f175ad21bc5bea61a611c52e83f9eed (patch)
treedeb12dc14329760c10ea7aadd06f2a8be73caa71 /writerfilter
parentdf3a97ac7c430d50aba92d1a684d3e06005da5fd (diff)
MSForms: Introduce a new IFieldMark for drop-down form field
* It was weird anyway that a drop-down form field was represented as an CheckboxFieldmark. * It will be useful for later commits, to have a separate field type for drop-down field. * Needed to fix-up the API a bit because it was designed to specify the field type after initialization. I solved it in a way to not break the API behavior. Hopefully it's not very slow. Reviewed-on: https://gerrit.libreoffice.org/68960 Tested-by: Jenkins Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> (cherry picked from commit f66a83c95c21b4311918a64bb85016857b49f4d4) Change-Id: I3103e6b1c36289b27b62ab9ca7dfeebc14901c8a Reviewed-on: https://gerrit.libreoffice.org/69194 Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/FormControlHelper.cxx17
1 files changed, 14 insertions, 3 deletions
diff --git a/writerfilter/source/dmapper/FormControlHelper.cxx b/writerfilter/source/dmapper/FormControlHelper.cxx
index 13e64697f6b0..01285831954f 100644
--- a/writerfilter/source/dmapper/FormControlHelper.cxx
+++ b/writerfilter/source/dmapper/FormControlHelper.cxx
@@ -202,6 +202,20 @@ bool FormControlHelper::createCheckbox(uno::Reference<text::XTextRange> const& x
void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFormField)
{
+ // Set field type first before adding parameters.
+ if (m_pImpl->m_eFieldId == FIELD_FORMTEXT )
+ {
+ xFormField->setFieldType(ODF_FORMTEXT);
+ }
+ else if (m_pImpl->m_eFieldId == FIELD_FORMCHECKBOX )
+ {
+ xFormField->setFieldType(ODF_FORMCHECKBOX);
+ }
+ else if (m_pImpl->m_eFieldId == FIELD_FORMDROPDOWN )
+ {
+ xFormField->setFieldType(ODF_FORMDROPDOWN);
+ }
+
uno::Reference<container::XNameContainer> xNameCont = xFormField->getParameters();
uno::Reference<container::XNamed> xNamed( xFormField, uno::UNO_QUERY );
if ( m_pFFData && xNamed.is() && xNameCont.is() )
@@ -209,7 +223,6 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo
if (m_pImpl->m_eFieldId == FIELD_FORMTEXT )
{
- xFormField->setFieldType(ODF_FORMTEXT);
if ( !m_pFFData->getName().isEmpty() )
{
xNamed->setName( m_pFFData->getName() );
@@ -217,7 +230,6 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo
}
else if (m_pImpl->m_eFieldId == FIELD_FORMCHECKBOX )
{
- xFormField->setFieldType(ODF_FORMCHECKBOX);
uno::Reference<beans::XPropertySet> xPropSet(xFormField, uno::UNO_QUERY);
uno::Any aAny;
aAny <<= m_pFFData->getCheckboxChecked();
@@ -226,7 +238,6 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo
}
else if (m_pImpl->m_eFieldId == FIELD_FORMDROPDOWN )
{
- xFormField->setFieldType(ODF_FORMDROPDOWN);
const FFDataHandler::DropDownEntries_t& rEntries = m_pFFData->getDropDownEntries();
if (!rEntries.empty())
{