summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-01-17 16:09:14 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-01-17 16:35:02 +0100
commit734cf8395d745db73f52fd6d625d7deb77ba6d40 (patch)
tree3e2f81136cae46e5c640f443f3fb8c5bb00ddc8f
parent0f86895fcd1001324974d644a728152b97b22ab0 (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.cxx2
-rw-r--r--sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docxbin15796 -> 15891 bytes
-rw-r--r--sw/qa/extras/ooxmlimport/ooxmlimport.cxx4
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
index 06aa39d75df9..74dd72a26a31 100644
--- a/sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx
+++ b/sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx
Binary files differ
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")