diff options
-rw-r--r-- | oox/source/ole/axcontrol.cxx | 9 | ||||
-rw-r--r-- | sd/qa/unit/activex-controls-tests.cxx | 3 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/activex_textbox.docx | bin | 0 -> 16937 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 25 |
4 files changed, 34 insertions, 3 deletions
diff --git a/oox/source/ole/axcontrol.cxx b/oox/source/ole/axcontrol.cxx index c8be2ca7c7bc..fe1c36d1fb17 100644 --- a/oox/source/ole/axcontrol.cxx +++ b/oox/source/ole/axcontrol.cxx @@ -1768,7 +1768,10 @@ ApiControlType AxTextBoxModel::getControlType() const void AxTextBoxModel::convertProperties( PropertyMap& rPropMap, const ControlConverter& rConv ) const { - rPropMap.setProperty( PROP_MultiLine, getFlag( mnFlags, AX_FLAGS_MULTILINE ) ); + if (getFlag( mnFlags, AX_FLAGS_MULTILINE ) && getFlag( mnFlags, AX_FLAGS_WORDWRAP )) + rPropMap.setProperty( PROP_MultiLine, true ); + else + rPropMap.setProperty( PROP_MultiLine, false ); rPropMap.setProperty( PROP_HideInactiveSelection, getFlag( mnFlags, AX_FLAGS_HIDESELECTION ) ); rPropMap.setProperty( PROP_ReadOnly, getFlag( mnFlags, AX_FLAGS_LOCKED ) ); rPropMap.setProperty( mbAwtModel ? PROP_Text : PROP_DefaultText, maValue ); @@ -1785,8 +1788,10 @@ void AxTextBoxModel::convertProperties( PropertyMap& rPropMap, const ControlConv void AxTextBoxModel::convertFromProperties( PropertySet& rPropSet, const ControlConverter& rConv ) { bool bRes = false; - if ( rPropSet.getProperty( bRes, PROP_MultiLine ) ) + if ( rPropSet.getProperty( bRes, PROP_MultiLine ) ) { setFlag( mnFlags, AX_FLAGS_WORDWRAP, bRes ); + setFlag( mnFlags, AX_FLAGS_MULTILINE, bRes ); + } if ( rPropSet.getProperty( bRes, PROP_HideInactiveSelection ) ) setFlag( mnFlags, AX_FLAGS_HIDESELECTION, bRes ); if ( rPropSet.getProperty( bRes, PROP_ReadOnly ) ) diff --git a/sd/qa/unit/activex-controls-tests.cxx b/sd/qa/unit/activex-controls-tests.cxx index 677db75a0a6c..692a5b8b6d5d 100644 --- a/sd/qa/unit/activex-controls-tests.cxx +++ b/sd/qa/unit/activex-controls-tests.cxx @@ -260,8 +260,9 @@ void SdActiveXControlsTest::testTextBoxProperties() xPropertySet->getPropertyValue("Enabled") >>= bEnabled; CPPUNIT_ASSERT_EQUAL(false, bEnabled); + // These textfields are not multilines in the pptx testfile xPropertySet->getPropertyValue("MultiLine") >>= bMultiLine; - CPPUNIT_ASSERT_EQUAL(true, bMultiLine); + CPPUNIT_ASSERT_EQUAL(false, bMultiLine); xPropertySet->getPropertyValue("TextColor") >>= nColor; CPPUNIT_ASSERT_EQUAL(sal_Int32(0x404040), nColor); diff --git a/sw/qa/extras/ooxmlexport/data/activex_textbox.docx b/sw/qa/extras/ooxmlexport/data/activex_textbox.docx Binary files differnew file mode 100644 index 000000000000..6f137008ce78 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/activex_textbox.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index 1d40cfef8268..b3551e52ae89 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -934,6 +934,31 @@ DECLARE_OOXMLEXPORT_TEST(testTdf106062_nonHangingFootnote, "tdf106062_nonHanging CPPUNIT_ASSERT_MESSAGE( "Footnote starts with a tab", xTextRange->getString().startsWith("\t") ); } +DECLARE_OOXMLEXPORT_TEST( testActiveXTextfield, "activex_textbox.docx" ) +{ + uno::Reference<drawing::XControlShape> xControlShape( getShape(1), uno::UNO_QUERY ); + CPPUNIT_ASSERT( xControlShape.is() ); + + // Check control type + uno::Reference<beans::XPropertySet> xPropertySet( xControlShape->getControl(), uno::UNO_QUERY ); + uno::Reference<lang::XServiceInfo> xServiceInfo( xPropertySet, uno::UNO_QUERY ); + CPPUNIT_ASSERT_EQUAL( true, bool( xServiceInfo->supportsService ( "com.sun.star.form.component.TextField" ) ) ); + + // Check textfield is multi-line + CPPUNIT_ASSERT_EQUAL( true, getProperty<bool>(xPropertySet, "MultiLine") ); + + uno::Reference<drawing::XControlShape> xControlShape2( getShape(2), uno::UNO_QUERY ); + CPPUNIT_ASSERT( xControlShape2.is() ); + + // Check control type + uno::Reference<beans::XPropertySet> xPropertySet2( xControlShape2->getControl(), uno::UNO_QUERY ); + uno::Reference<lang::XServiceInfo> xServiceInfo2( xPropertySet2, uno::UNO_QUERY ); + CPPUNIT_ASSERT_EQUAL( true, bool( xServiceInfo2->supportsService ( "com.sun.star.form.component.TextField" ) ) ); + + // Check textfield is single-line + CPPUNIT_ASSERT_EQUAL( false, getProperty<bool>(xPropertySet2, "MultiLine") ); +} + DECLARE_OOXMLEXPORT_TEST( testActiveXCheckbox, "activex_checkbox.docx" ) { uno::Reference<drawing::XControlShape> xControlShape( getShape(1), uno::UNO_QUERY ); |