summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2018-09-10 17:07:47 +0300
committerAndras Timar <andras.timar@collabora.com>2018-09-11 18:37:29 +0200
commitc20276eb5c80114cf23a6950d836e722103c0f30 (patch)
treee3aaf3bf82671a76486ff1338a610e5f29c0bda4
parentff1500df0ff350caa091d042a9db4ab8696d4918 (diff)
tdf#109229: Set "TextBox" prop before filling textbox-related props
Otherwise those properties aren't set, and defaults are used Change-Id: Ib6671c019ff652ec5b59d9cbbf02a4e536a17817 Reviewed-on: https://gerrit.libreoffice.org/60267 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit c3422cd205d8da852f5c310b5f08028d6c4c5eb4) Reviewed-on: https://gerrit.libreoffice.org/60297 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--sw/qa/extras/layout/data/tdf117188.docxbin0 -> 1857 bytes
-rw-r--r--sw/qa/extras/layout/layout.cxx24
-rw-r--r--xmloff/source/draw/ximpshap.cxx14
3 files changed, 33 insertions, 5 deletions
diff --git a/sw/qa/extras/layout/data/tdf117188.docx b/sw/qa/extras/layout/data/tdf117188.docx
new file mode 100644
index 000000000000..418f665ae7dc
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf117188.docx
Binary files differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 936909538bfc..8c9740b7e2ae 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -7,6 +7,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+#include <comphelper/propertysequence.hxx>
#include <swmodeltestbase.hxx>
#include <test/mtfxmldump.hxx>
@@ -21,6 +22,7 @@ public:
void testTdf117028();
void testTdf117923();
void testTdf118058();
+ void testTdf117188();
CPPUNIT_TEST_SUITE(SwLayoutWriter);
CPPUNIT_TEST(testTdf116830);
@@ -28,6 +30,7 @@ public:
CPPUNIT_TEST(testTdf117028);
CPPUNIT_TEST(testTdf117923);
CPPUNIT_TEST(testTdf118058);
+ CPPUNIT_TEST(testTdf117188);
CPPUNIT_TEST_SUITE_END();
private:
@@ -132,6 +135,27 @@ void SwLayoutWriter::testTdf118058()
pDoc->getIDocumentLayoutAccess().GetCurrentViewShell()->CalcLayout();
}
+void SwLayoutWriter::testTdf117188()
+{
+ createDoc("tdf117188.docx");
+ uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
+ utl::TempFile aTempFile;
+ aTempFile.EnableKillingFile();
+ uno::Sequence<beans::PropertyValue> aDescriptor(comphelper::InitPropertySequence({
+ { "FilterName", uno::Any(OUString("writer8")) },
+ }));
+ xStorable->storeToURL(aTempFile.GetURL(), aDescriptor);
+ loadURL(aTempFile.GetURL(), "tdf117188.odt");
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+ OUString sWidth = getXPath(pXmlDoc, "/root/page/body/txt/anchored/fly/infos/bounds", "width");
+ OUString sHeight = getXPath(pXmlDoc, "/root/page/body/txt/anchored/fly/infos/bounds", "height");
+ // The text box must have zero border distances
+ assertXPath(pXmlDoc, "/root/page/body/txt/anchored/fly/infos/prtBounds", "left", "0");
+ assertXPath(pXmlDoc, "/root/page/body/txt/anchored/fly/infos/prtBounds", "top", "0");
+ assertXPath(pXmlDoc, "/root/page/body/txt/anchored/fly/infos/prtBounds", "width", sWidth);
+ assertXPath(pXmlDoc, "/root/page/body/txt/anchored/fly/infos/prtBounds", "height", sHeight);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SwLayoutWriter);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx
index 2f4f873a9cf4..5cf305acbe0c 100644
--- a/xmloff/source/draw/ximpshap.cxx
+++ b/xmloff/source/draw/ximpshap.cxx
@@ -690,6 +690,15 @@ void SdXMLShapeContext::SetStyle( bool bSupportsStyle /* = true */)
}
}
+ // Writer shapes: if this one has a TextBox, set it here. We need to do it before
+ // pDocStyle->FillPropertySet, because setting some properties depend on the format
+ // having RES_CNTNT attribute (e.g., UNO_NAME_TEXT_(LEFT|RIGHT|UPPER|LOWER)DIST; see
+ // SwTextBoxHelper::syncProperty, which indirectly calls SwTextBoxHelper::isTextBox)
+ uno::Reference<beans::XPropertySetInfo> xPropertySetInfo
+ = xPropSet->getPropertySetInfo();
+ if (xPropertySetInfo->hasPropertyByName("TextBox"))
+ xPropSet->setPropertyValue("TextBox", uno::makeAny(mbTextBox));
+
// if this is an auto style, set its properties
if(bAutoStyle && pDocStyle)
{
@@ -697,11 +706,6 @@ void SdXMLShapeContext::SetStyle( bool bSupportsStyle /* = true */)
pDocStyle->FillPropertySet(xPropSet);
}
- // Writer shapes: if this one has a TextBox, set it here.
- uno::Reference<beans::XPropertySetInfo> xPropertySetInfo = xPropSet->getPropertySetInfo();
- if (xPropertySetInfo->hasPropertyByName("TextBox"))
- xPropSet->setPropertyValue("TextBox", uno::makeAny(mbTextBox));
-
} while(false);
// try to set text auto style