diff options
-rw-r--r-- | oox/source/export/drawingml.cxx | 7 | ||||
-rw-r--r-- | sd/qa/unit/data/fdo79731.odp | bin | 0 -> 11008 bytes | |||
-rw-r--r-- | sd/qa/unit/export-tests.cxx | 11 |
3 files changed, 16 insertions, 2 deletions
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index df4bc238f93f..0629f2c45d33 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1175,7 +1175,9 @@ void DrawingML::WriteShapeTransformation( Reference< XShape > rXShape, sal_Int32 // The RotateAngle property's value is independent from any flipping, and that's exactly what we need here. uno::Reference<beans::XPropertySet> xPropertySet(rXShape, uno::UNO_QUERY); - xPropertySet->getPropertyValue("RotateAngle") >>= nRotation; + uno::Reference<beans::XPropertySetInfo> xPropertySetInfo = xPropertySet->getPropertySetInfo(); + if (xPropertySetInfo->hasPropertyByName("RotateAngle")) + xPropertySet->getPropertyValue("RotateAngle") >>= nRotation; } WriteTransformation( Rectangle( Point( aPos.X, aPos.Y ), Size( aSize.Width, aSize.Height ) ), nXmlNamespace, bFlipH, bFlipV, OOX_DRAWINGML_EXPORT_ROTATE_CLOCKWISIFY(nRotation) ); } @@ -1968,7 +1970,8 @@ void DrawingML::WriteText( Reference< XInterface > rXIface, const OUString& pres if( !enumeration.is() ) return; - SdrObject* pSdrObject = GetSdrObjectFromXShape(uno::Reference<drawing::XShape>(rXIface, uno::UNO_QUERY_THROW)); + uno::Reference<drawing::XShape> xShape(rXIface, uno::UNO_QUERY); + SdrObject* pSdrObject = xShape.is() ? GetSdrObjectFromXShape(xShape) : 0; const SdrTextObj* pTxtObj = PTR_CAST(SdrTextObj, pSdrObject); if (pTxtObj && mpTextExport) { diff --git a/sd/qa/unit/data/fdo79731.odp b/sd/qa/unit/data/fdo79731.odp Binary files differnew file mode 100644 index 000000000000..d5d094ae0125 --- /dev/null +++ b/sd/qa/unit/data/fdo79731.odp diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 61aead3b1fc5..a33a2a93f9e8 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -71,6 +71,7 @@ public: void testBnc862510_5(); void testBnc822347_EmptyBullet(); void testFdo83751(); + void testFdo79731(); CPPUNIT_TEST_SUITE(SdExportTest); CPPUNIT_TEST(testN821567); @@ -85,6 +86,7 @@ public: CPPUNIT_TEST(testBnc862510_5); CPPUNIT_TEST(testBnc822347_EmptyBullet); CPPUNIT_TEST(testFdo83751); + CPPUNIT_TEST(testFdo79731); CPPUNIT_TEST_SUITE_END(); }; @@ -477,6 +479,15 @@ void SdExportTest::testFdo83751() xDocShRef->DoClose(); } +void SdExportTest::testFdo79731() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/fdo79731.odp"), ODP); + xDocShRef = saveAndReload(xDocShRef, PPTX); + SdDrawDocument *pDoc = xDocShRef->GetDoc(); + CPPUNIT_ASSERT(pDoc); + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |