oox: import WPS shape with text as shape with textbox
This allows having real shapes (like having rounded corners) and complex content (like containing a table) at the same time. WPS shapes are wrappers around drawingML markup in DOCX files, so this only affects the DOCX import. Change-Id: Iad1c1c61233be1c17efa1821e680927aa9587215
This commit is contained in:
@@ -816,8 +816,7 @@ Reference< XShape > Shape::createAndInsert(
|
||||
}
|
||||
else if (mbTextBox)
|
||||
{
|
||||
//No such property yet
|
||||
//aShapeProps.setProperty(PROP_TextBox, uno::makeAny(true));
|
||||
aShapeProps.setProperty(PROP_TextBox, uno::makeAny(true));
|
||||
}
|
||||
|
||||
if (aServiceName != "com.sun.star.text.TextFrame" && isLinkedTxbx())
|
||||
|
||||
@@ -131,7 +131,6 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken
|
||||
case XML_txbx:
|
||||
{
|
||||
mpShape->getCustomShapeProperties()->setShapeTypeOverride(true);
|
||||
mpShape->setServiceName("com.sun.star.text.TextFrame");
|
||||
mpShape->setTextBox(true);
|
||||
//in case if the textbox is linked, save the attributes
|
||||
//for further processing.
|
||||
@@ -153,7 +152,6 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken
|
||||
//in case if the textbox is linked, save the attributes
|
||||
//for further processing.
|
||||
mpShape->getCustomShapeProperties()->setShapeTypeOverride(true);
|
||||
mpShape->setServiceName("com.sun.star.text.TextFrame");
|
||||
mpShape->setTextBox(true);
|
||||
OptValue<OUString> id = rAttribs.getString(XML_id);
|
||||
OptValue<OUString> seq = rAttribs.getString(XML_seq);
|
||||
|
||||
Binary file not shown.
@@ -1796,6 +1796,21 @@ DECLARE_OOXMLEXPORT_TEST(testDashedLine_CustDashPercentage, "dashed_line_custdas
|
||||
assertXPath(pXmlDoc,"/w:document/w:body/w:p[1]/w:r[1]/mc:AlternateContent[1]/mc:Choice[1]/w:drawing[1]/wp:anchor[1]/a:graphic[1]/a:graphicData[1]/wps:wsp[1]/wps:spPr[1]/a:ln[1]/a:custDash[1]/a:ds[3]", "sp", "300000");
|
||||
}
|
||||
|
||||
DECLARE_OOXMLEXPORT_TEST(testTextboxRoundedCorners, "textbox-rounded-corners.docx")
|
||||
{
|
||||
uno::Reference<drawing::XShape> xShape = getShape(1);
|
||||
comphelper::SequenceAsHashMap aCustomShapeGeometry = comphelper::SequenceAsHashMap(getProperty< uno::Sequence<beans::PropertyValue> >(xShape, "CustomShapeGeometry"));
|
||||
|
||||
// Test that the shape is a rounded rectangle.
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("ooxml-roundRect"), aCustomShapeGeometry["Type"].get<OUString>());
|
||||
|
||||
// The shape text should start with a table, with "a" in its A1 cell.
|
||||
uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY)->getText();
|
||||
uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1, xText), uno::UNO_QUERY);
|
||||
uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A1"), uno::UNO_QUERY);
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("a"), xCell->getString());
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
CPPUNIT_PLUGIN_IMPLEMENT();
|
||||
|
||||
Reference in New Issue
Block a user