summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2019-03-09 14:44:50 +0100
committerTamás Zolnai <tamas.zolnai@collabora.com>2019-03-09 15:40:56 +0100
commitf66a83c95c21b4311918a64bb85016857b49f4d4 (patch)
tree0d0c507947bad6c711003ede66f09a7f20238cbc /writerfilter
parent499501e8cf1d511eb95a7b72b755c2dc69985719 (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. Change-Id: I3103e6b1c36289b27b62ab9ca7dfeebc14901c8a Reviewed-on: https://gerrit.libreoffice.org/68960 Tested-by: Jenkins Reviewed-by: Tamás Zolnai <tamas.zolnai@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 3088a4a27361..98e7bb0ba319 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() )
@@ -223,7 +237,6 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo
if (m_pImpl->m_eFieldId == FIELD_FORMTEXT )
{
- xFormField->setFieldType(ODF_FORMTEXT);
sTmp = m_pFFData->getName();
try
{
@@ -255,7 +268,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();
@@ -264,7 +276,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())
{