Kaydet (Commit) 734cf839 authored tarafından Miklos Vajna's avatar Miklos Vajna

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
üst 0f86895f
......@@ -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);
}
}
}
......
......@@ -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")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment