diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-01-17 16:09:14 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-01-17 16:35:02 +0100 |
commit | 734cf8395d745db73f52fd6d625d7deb77ba6d40 (patch) | |
tree | 3e2f81136cae46e5c640f443f3fb8c5bb00ddc8f | |
parent | 0f86895fcd1001324974d644a728152b97b22ab0 (diff) |
VML import: fix height of textboxes when border distance is non-zero
The VML concept is that the height / width of a textbox is absolute, and
border distances only affect the position of the shape text, not the
size of it. OTOH, when we set the Text*Distance UNO properties on a
textbox, the size may change. Make sure that during VML import setting
those properties doesn't change the size.
Change-Id: I53b328b66572fc05027be344869bc1a78d855558
-rw-r--r-- | oox/source/vml/vmlshape.cxx | 2 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx | bin | 15796 -> 15891 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 4 |
3 files changed, 6 insertions, 0 deletions
diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index 9e6f20846e1d..17b8818a405c 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -620,10 +620,12 @@ Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes getTextBox()->convert(xShape); if (getTextBox()->borderDistanceSet) { + awt::Size aSize = xShape->getSize(); PropertySet(xShape).setAnyProperty(PROP_TextLeftDistance, makeAny(sal_Int32(getTextBox()->borderDistanceLeft))); PropertySet(xShape).setAnyProperty(PROP_TextUpperDistance, makeAny(sal_Int32(getTextBox()->borderDistanceTop))); PropertySet(xShape).setAnyProperty(PROP_TextRightDistance, makeAny(sal_Int32(getTextBox()->borderDistanceRight))); PropertySet(xShape).setAnyProperty(PROP_TextLowerDistance, makeAny(sal_Int32(getTextBox()->borderDistanceBottom))); + xShape->setSize(aSize); } } } diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx b/sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx Binary files differindex 06aa39d75df9..74dd72a26a31 100644 --- a/sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx +++ b/sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index 32e54d2066b8..2e9ff53e9b38 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -971,6 +971,10 @@ DECLARE_OOXMLIMPORT_TEST(testGroupshapeChildRotation, "groupshape-child-rotation uno::Reference<drawing::XShape> xShape(xGroupShape->getByIndex(0), uno::UNO_QUERY); CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xShape->getPosition().X); CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xShape->getPosition().Y); + + xShape.set(xGroupShape->getByIndex(4), uno::UNO_QUERY); + // This was 887, i.e. border distances were included in the height. + CPPUNIT_ASSERT_EQUAL(sal_Int32(686), xShape->getSize().Height); } DECLARE_OOXMLIMPORT_TEST(testN793262, "n793262.docx") |