diff options
-rw-r--r-- | oox/qa/unit/data/shape-non-autosize-with-text.docx | bin | 0 -> 35448 bytes | |||
-rw-r--r-- | oox/qa/unit/vml.cxx | 18 | ||||
-rw-r--r-- | oox/source/vml/vmlshape.cxx | 6 |
3 files changed, 21 insertions, 3 deletions
diff --git a/oox/qa/unit/data/shape-non-autosize-with-text.docx b/oox/qa/unit/data/shape-non-autosize-with-text.docx Binary files differnew file mode 100644 index 000000000000..b9ae501f4b93 --- /dev/null +++ b/oox/qa/unit/data/shape-non-autosize-with-text.docx diff --git a/oox/qa/unit/vml.cxx b/oox/qa/unit/vml.cxx index b27876426956..089d61085b74 100644 --- a/oox/qa/unit/vml.cxx +++ b/oox/qa/unit/vml.cxx @@ -91,6 +91,24 @@ CPPUNIT_TEST_FIXTURE(OoxVmlTest, testSpt202ShapeType) CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.TextShape"), xShape->getShapeType()); } +CPPUNIT_TEST_FIXTURE(OoxVmlTest, testShapeNonAutosizeWithText) +{ + // Load a document which has a group shape, containing a single child. + // 17.78 cm is the full group shape width, 19431/64008 is the child shape's relative width inside + // that, so 5.3975 cm should be the shape width. + load("shape-non-autosize-with-text.docx"); + uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xGroup(xDrawPage->getByIndex(0), uno::UNO_QUERY); + uno::Reference<drawing::XShape> xShape(xGroup->getByIndex(0), uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // - Actual : 1115 + // - Expected: 5398 + // because the width was determined using its text size, not using the explicit size. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5398), xShape->getSize().Width); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index 3444c1cd2743..0e9770a6cdbb 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -783,6 +783,9 @@ Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes eTextVerticalAdjust = drawing::TextVerticalAdjust_BOTTOM; PropertySet(xShape).setAnyProperty(PROP_TextVerticalAdjust, makeAny(eTextVerticalAdjust)); + PropertySet(xShape).setAnyProperty(PROP_TextAutoGrowHeight, + makeAny(maTypeModel.mbAutoHeight)); + if (getTextBox()) { getTextBox()->convert(xShape); @@ -796,9 +799,6 @@ Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes xShape->setSize(aSize); } } - - PropertySet(xShape).setAnyProperty(PROP_TextAutoGrowHeight, - makeAny(maTypeModel.mbAutoHeight)); } // Import Legacy Fragments (if any) |