VML import: fix rotation of simple shapes inside group shapes
Change-Id: I28d2e2d801b06b92b5348123d88604fb4d10d828
This commit is contained in:
@@ -642,9 +642,13 @@ Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes
|
|||||||
if (oRotation)
|
if (oRotation)
|
||||||
{
|
{
|
||||||
lcl_SetRotation(aPropertySet, *oRotation);
|
lcl_SetRotation(aPropertySet, *oRotation);
|
||||||
// If rotation is used, simple setPosition() is not enough.
|
uno::Reference<lang::XServiceInfo> xServiceInfo(rxShapes, uno::UNO_QUERY);
|
||||||
aPropertySet.setAnyProperty(PROP_HoriOrientPosition, makeAny( aShapeRect.X ) );
|
if (!xServiceInfo->supportsService("com.sun.star.drawing.GroupShape"))
|
||||||
aPropertySet.setAnyProperty(PROP_VertOrientPosition, makeAny( aShapeRect.Y ) );
|
{
|
||||||
|
// If rotation is used, simple setPosition() is not enough.
|
||||||
|
aPropertySet.setAnyProperty(PROP_HoriOrientPosition, makeAny(aShapeRect.X));
|
||||||
|
aPropertySet.setAnyProperty(PROP_VertOrientPosition, makeAny(aShapeRect.Y));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// When flip has 'x' or 'y', the associated ShapeRect will be changed but direction change doesn't occur.
|
// When flip has 'x' or 'y', the associated ShapeRect will be changed but direction change doesn't occur.
|
||||||
|
BIN
sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx
Normal file
BIN
sw/qa/extras/ooxmlimport/data/groupshape-child-rotation.docx
Normal file
Binary file not shown.
@@ -962,6 +962,17 @@ DECLARE_OOXMLIMPORT_TEST(testGroupshapeLine, "groupshape-line.docx")
|
|||||||
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xShape->getSize().Height);
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xShape->getSize().Height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECLARE_OOXMLIMPORT_TEST(testGroupshapeChildRotation, "groupshape-child-rotation.docx")
|
||||||
|
{
|
||||||
|
// The problem was that (due to incorrect handling of rotation inside
|
||||||
|
// groupshapes), the first child wasn't in the top left corner of an inline
|
||||||
|
// groupshape.
|
||||||
|
uno::Reference<drawing::XShapes> xGroupShape(getShape(1), uno::UNO_QUERY);
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
DECLARE_OOXMLIMPORT_TEST(testN793262, "n793262.docx")
|
DECLARE_OOXMLIMPORT_TEST(testN793262, "n793262.docx")
|
||||||
{
|
{
|
||||||
uno::Reference<container::XEnumerationAccess> xHeaderText = getProperty< uno::Reference<container::XEnumerationAccess> >(getStyles("PageStyles")->getByName(DEFAULT_STYLE), "HeaderText");
|
uno::Reference<container::XEnumerationAccess> xHeaderText = getProperty< uno::Reference<container::XEnumerationAccess> >(getStyles("PageStyles")->getByName(DEFAULT_STYLE), "HeaderText");
|
||||||
|
Reference in New Issue
Block a user