diff --git a/oox/source/shape/WpsContext.cxx b/oox/source/shape/WpsContext.cxx index ed2b1de4de2d..90628b2f0c18 100644 --- a/oox/source/shape/WpsContext.cxx +++ b/oox/source/shape/WpsContext.cxx @@ -75,8 +75,9 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken uno::Reference xServiceInfo(mxShape, uno::UNO_QUERY); uno::Reference xPropertySet(mxShape, uno::UNO_QUERY); - if (xServiceInfo.is() && xServiceInfo->supportsService("com.sun.star.text.TextFrame")) + if (xServiceInfo.is()) { + bool bTextFrame = xServiceInfo->supportsService("com.sun.star.text.TextFrame"); // Handle inset attributes for Writer textframes. sal_Int32 aInsets[] = { XML_lIns, XML_tIns, XML_rIns, XML_bIns }; boost::optional oInsets[4]; @@ -87,9 +88,10 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken oInsets[i] = oox::drawingml::GetCoordinate(oValue.get()); } OUString aProps[] = { OUString("LeftBorderDistance"), OUString("TopBorderDistance"), OUString("RightBorderDistance"), OUString("BottomBorderDistance") }; - for (size_t i = 0; i < SAL_N_ELEMENTS(aProps); ++i) + OUString aShapeProps[] = { OUString("TextLeftDistance"), OUString("TextUpperDistance"), OUString("TextRightDistance"), OUString("TextLowerDistance") }; + for (size_t i = 0; i < SAL_N_ELEMENTS(bTextFrame ? aProps : aShapeProps); ++i) if (oInsets[i]) - xPropertySet->setPropertyValue(aProps[i], uno::makeAny(*oInsets[i])); + xPropertySet->setPropertyValue((bTextFrame ? aProps : aShapeProps)[i], uno::makeAny(*oInsets[i])); } // Handle text vertical adjustment inside a text frame diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 13790cc09b30..c4de6d1f2869 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -605,11 +605,23 @@ DECLARE_OOXMLEXPORT_TEST(testFdo48557, "fdo48557.odt") // Inner margins of the textframe wasn't exported. uno::Reference xTextFramesSupplier(mxComponent, uno::UNO_QUERY); uno::Reference xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY); - uno::Reference xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY); - CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "LeftBorderDistance")); - CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "RightBorderDistance")); - CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "TopBorderDistance")); - CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "BottomBorderDistance")); + if (xIndexAccess->getCount() > 0) + { + // TODO TextBox: remove this when TextBox is enabled by default + uno::Reference xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "LeftBorderDistance")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "RightBorderDistance")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "TopBorderDistance")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "BottomBorderDistance")); + } + else + { + uno::Reference xFrame(getShape(1), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "TextLeftDistance")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "TextRightDistance")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "TextUpperDistance")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(150), getProperty(xFrame, "TextLowerDistance")); + } } DECLARE_OOXMLEXPORT_TEST(testI120928, "i120928.docx")