[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport6.cxx |7 ++- 1 file changed, 2 insertions(+), 5 deletions(-) New commits: commit 0be6e21857f868d85049fca2c8e02fc5e8802120 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:30:26 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 19:35:50 2020 +0200 tdf#129423 sw: export-only tests, part 10 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I0edb7988431b9e8cf5959dcb5753301fa4a0c210 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101721 Tested-by: Jenkins Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport6.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport6.cxx index fa09ebbfbc27..120a8db1d3bb 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport6.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport6.cxx @@ -119,13 +119,10 @@ DECLARE_OOXMLEXPORT_TEST(testDmlTextshape, "dml-textshape.docx") CPPUNIT_ASSERT_EQUAL(sal_Int32(-4727), xShape->getPosition().Y); } -DECLARE_OOXMLEXPORT_TEST(testDmlTextshapeB, "dml-textshapeB.docx") +// testDmlTextshapeB was only made export-only because as an import-export test it failed for an unknown reason +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testDmlTextshapeB, "dml-textshapeB.docx") { uno::Reference xGroup(getShape(1), uno::UNO_QUERY); -xmlDocUniquePtr pXmlDocument = parseExport("word/document.xml"); -if (!pXmlDocument) -return; - uno::Reference xShape(xGroup->getByIndex(3), uno::UNO_QUERY); // Connector was incorrectly shifted towards the top left corner, X was 192, Y was -5743. CPPUNIT_ASSERT_EQUAL(sal_Int32(3778), xShape->getPosition().X); ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport13.cxx | 13 ++--- 1 file changed, 2 insertions(+), 11 deletions(-) New commits: commit 77829e5310350afe5d5e66f8abc3adbcc988ba39 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:24:20 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 19:35:12 2020 +0200 tdf#129423 sw: export-only tests, part 4 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I56bb66b2766f5a65e195a8f80f14cfc29188749a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101715 Tested-by: Jenkins Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx index cc2a19c44cd2..fff8e17ec4f5 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx @@ -883,12 +883,10 @@ DECLARE_OOXMLEXPORT_TEST(testTdf125324, "tdf125324.docx") assertXPath(pXmlDoc, "/root/page/body/txt[2]/anchored/fly/tab/infos/bounds", "top", "4193"); } -DECLARE_OOXMLEXPORT_TEST(testTdf78657, "tdf78657_picture_hyperlink.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf78657, "tdf78657_picture_hyperlink.docx") { xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); xmlDocUniquePtr pXmlRels = parseExport("word/_rels/document.xml.rels"); -if (!pXmlDoc || !pXmlRels) -return; assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:drawing/wp:inline/wp:docPr/a:hlinkClick", 1); assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:drawing/wp:inline/a:graphic/a:graphicData/pic:pic/pic:nvPicPr/pic:cNvPr/a:hlinkClick", 1); assertXPath(pXmlRels, "/rels:Relationships/rels:Relationship[@Target='http://www.google.com']", "TargetMode", "External"); @@ -1107,8 +1105,6 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf127362, "tdf127362.odt") xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); xmlDocUniquePtr pXmlRels = parseExport("word/_rels/document.xml.rels"); -if (!pXmlRels) -return; OUString bookmarkName = "#" + getXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:bookmarkStart", "name"); OUString anchor = getXPath(pXmlRels, "/rels:Relationships/rels:Relationship[@Id='rId3']", "Target"); @@ -1175,8 +1171,6 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf123628, "tdf123628.odt") xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); xmlDocUniquePtr pXmlStyles = parseExport("word/styles.xml"); -if (!pXmlStyles) -return; assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:hyperlink/w:r/w:rPr/w:rStyle", "val", "InternetLink"); assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='InternetLink']/w:name", "val", "Hyperlink"); @@ -1192,13 +1186,10 @@ DECLARE_OOXMLEXPORT_TEST(testTdf127741, "tdf127741.docx") CPPUNIT_ASSERT(visitedStyleName.equalsIgnoreAsciiCase("Visited Internet Link")); } -DECLARE_OOXMLEXPORT_TEST(testTdf127925, "tdf127925.odt") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf127925, "tdf127925.odt") { CPPUNIT_ASSERT_EQUAL(1, getPages()); xmlDocUniquePtr pXmlStyles = parseExport("word/styles.xml"); -if (!pXmlStyles) -return; - assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='VisitedInternetLink']/w:name", "val", "FollowedHyperlink"); } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: include/oox oox/source sw/qa sw/source writerfilter/source
include/oox/ole/oleobjecthelper.hxx |2 +- oox/source/ole/oleobjecthelper.cxx | 10 +++--- sw/qa/extras/ooxmlexport/data/tdf131537.odt |binary sw/qa/extras/ooxmlexport/ooxmlexport5.cxx|7 +++ sw/source/filter/ww8/docxattributeoutput.cxx | 16 +++- writerfilter/source/dmapper/OLEHandler.cxx |4 ++-- 6 files changed, 24 insertions(+), 15 deletions(-) New commits: commit 07dcb0dab759d4ab535d99c0e6d326959906b87e Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 12:48:07 2020 +0200 Commit: László Németh CommitDate: Thu Sep 3 18:34:55 2020 +0200 tdf#131537 DOCX export: fix OLE "Display as icon" for example to avoid converting OLE icons of an ODF document to an icon-size embedded spreadsheet. When creating a new OLE object in Writer the user has an option called "Display as icon" which causes the actual contents of the OLE to be hidden when rendered in the document. This setting, referred to internally as the DrawAspect of the object, was imported fine, but when exported to a .docx it always had the value "Content" (corresponding to "Display as icon" being unchecked). Now OLE objects with "Display as icon" checked are saved with DrawAspect="Icon". A grab bag entry was previously used to let the DrawAspect setting flow through Writer from OOXML import to export. Now this workaround is no longer needed and is removed by the present commit. Change-Id: I46ea4fc95a26bcd1f85e19a506c0965f73d4257a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101711 Tested-by: László Németh Reviewed-by: László Németh diff --git a/include/oox/ole/oleobjecthelper.hxx b/include/oox/ole/oleobjecthelper.hxx index a9d6bfec54bd..d2506f3d4949 100644 --- a/include/oox/ole/oleobjecthelper.hxx +++ b/include/oox/ole/oleobjecthelper.hxx @@ -76,7 +76,7 @@ private: OOX_DLLPUBLIC void SaveInteropProperties( css::uno::Reference const& xModel, OUString const& rObjectName, OUString const* pOldObjectName, - OUString const& rProgId, OUString const& rDrawAspect); + OUString const& rProgId); } // namespace oox::ole diff --git a/oox/source/ole/oleobjecthelper.cxx b/oox/source/ole/oleobjecthelper.cxx index b6c4edb4314e..6716ac1ebb29 100644 --- a/oox/source/ole/oleobjecthelper.cxx +++ b/oox/source/ole/oleobjecthelper.cxx @@ -87,7 +87,7 @@ OleObjectHelper::~OleObjectHelper() // just "application/vnd.sun.star.oleobject" void SaveInteropProperties(uno::Reference const& xModel, OUString const& rObjectName, OUString const*const pOldObjectName, - OUString const& rProgId, OUString const& rDrawAspect) + OUString const& rProgId) { static const char sEmbeddingsPropName[] = "EmbeddedObjects"; @@ -100,11 +100,9 @@ void SaveInteropProperties(uno::Reference const& xModel, if (aGrabBag.find(sEmbeddingsPropName) != aGrabBag.end()) objectsList << aGrabBag[sEmbeddingsPropName]; -uno::Sequence< beans::PropertyValue > aGrabBagAttribute(2); +uno::Sequence< beans::PropertyValue > aGrabBagAttribute(1); aGrabBagAttribute[0].Name = "ProgID"; aGrabBagAttribute[0].Value <<= rProgId; -aGrabBagAttribute[1].Name = "DrawAspect"; -aGrabBagAttribute[1].Value <<= rDrawAspect; // If we got an "old name", erase that first. if (pOldObjectName) @@ -148,9 +146,7 @@ bool OleObjectHelper::importOleObject( PropertyMap& rPropMap, const OleObjectInf xOutStrm->writeBytes( rOleObject.maEmbeddedData ); xOutStrm->closeOutput(); -SaveInteropProperties(m_xModel, aObjectId, nullptr, -rOleObject.maProgId, -rOleObject.mbShowAsIcon ? OUString("Icon") : OUString("Content")); +SaveInteropProperties(m_xModel, aObjectId, nullptr, rOleObject.maProgId); OUString aUrl = mxResolver->resolveEmbeddedObjectURL( aObjectId ); OSL_ENSURE( aUrl.match( g_aEmbeddedObjScheme ), "OleObjectHelper::importOleObject - unexpected URL scheme" ); diff --git a/sw/qa/extras/ooxmlexport/data/tdf131537.odt b/sw/qa/extras/ooxmlexport/data/tdf131537.odt new file mode 100644 index ..21f396368917 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf131537.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx index 6c07f4534ed4..af9cd5c86a56 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx @@ -909,6 +909,13 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo80898, "fdo80898.docx") "Word.Document.8"); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testOleIconDrawAspect, "tdf131537.odt") +{ +xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); +assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r/w:object/o:OLEObject", +"DrawAspect", "Icon"); +} +
[Libreoffice-commits] core.git: chart2/qa
chart2/qa/extras/chart2export.cxx |9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) New commits: commit ceae73dd294b5ca4073062afc1223efb1c206780 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:10:26 2020 +0200 Commit: Mike Kaganski CommitDate: Tue Sep 1 09:04:06 2020 +0200 tdf#129423 sw: Make yet more tests export-only This commit continues an earlier, incomplete unit test refactor under the same bug ticket number. Eliminates a few unwanted nullptr tests in chart2/qa/. Change-Id: I6bd5c24ba264793ebe8fff20ba954be0d1e84882 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101540 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index 7e17c2f1307c..3e1f5d86e897 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -655,8 +655,7 @@ void Chart2ExportTest::testStockChart() load("/chart2/qa/extras/data/docx/", "testStockChart.docx"); xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text"); -if (!pXmlDoc) - return; +CPPUNIT_ASSERT(pXmlDoc); assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:idx", "val", "1"); assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:order", "val", "1"); @@ -670,8 +669,7 @@ void Chart2ExportTest::testBarChart() { load("/chart2/qa/extras/data/docx/", "testBarChart.docx"); xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text"); -if (!pXmlDoc) - return; +CPPUNIT_ASSERT(pXmlDoc); assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:barDir", "val", "col"); } @@ -727,8 +725,7 @@ void Chart2ExportTest::testScatterChartTextXValues() // Test the export. xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text"); -if (!pXmlDoc) - return; +CPPUNIT_ASSERT(pXmlDoc); assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal[1]/c:numRef[1]/c:numCache[1]/c:pt[1]/c:v[1]", "1"); } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - chart2/qa oox/source
chart2/qa/extras/chart2export.cxx | 14 ++ chart2/qa/extras/data/odp/tdf121189.odp |binary oox/source/export/shapes.cxx|1 + 3 files changed, 15 insertions(+) New commits: commit f366b87d71d774c3a6983224903933bb32b43ff0 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 24 17:29:08 2020 +0200 Commit: Xisco Fauli CommitDate: Tue Sep 1 13:26:40 2020 +0200 tdf#121189 PPTX export: fix missing chart Based on Regina Henschel's technical analysis and code pointer. Change-Id: Ifdea48c09d23dce495fa6bc90a9e1648dbb5ccb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101283 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 0c5ac9d1cb39eac838a612092a8934a6ca12326f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101674 Tested-by: Jenkins Reviewed-by: Xisco Fauli diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index 81b79439a9ff..2459a2b3089b 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -155,6 +155,7 @@ public: void testTdf119029(); void testTdf108022(); void testTdf121744(); +void testTdf121189(); void testTdf122031(); void testTdf115012(); void testTdf123206_customLabelText(); @@ -289,6 +290,7 @@ public: CPPUNIT_TEST(testTdf119029); CPPUNIT_TEST(testTdf108022); CPPUNIT_TEST(testTdf121744); +CPPUNIT_TEST(testTdf121189); CPPUNIT_TEST(testTdf122031); CPPUNIT_TEST(testTdf115012); CPPUNIT_TEST(testTdf123206_customLabelText); @@ -2540,6 +2542,18 @@ void Chart2ExportTest::testTdf121744() assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[2]", "val", YValueId ); } +void Chart2ExportTest::testTdf121189() +{ +load("/chart2/qa/extras/data/odp/", "tdf121189.odp"); +reload("Impress Office Open XML"); + +uno::Reference xDoc(mxComponent, uno::UNO_QUERY_THROW); +uno::Reference xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); +CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xPage->getCount()); +uno::Reference xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); +CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.OLE2Shape"), xShape->getShapeType()); +} + void Chart2ExportTest::testTdf122031() { //Checks pie chart data label format. diff --git a/chart2/qa/extras/data/odp/tdf121189.odp b/chart2/qa/extras/data/odp/tdf121189.odp new file mode 100644 index ..6f99e0054936 Binary files /dev/null and b/chart2/qa/extras/data/odp/tdf121189.odp differ diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 9a6a72b08b0f..1b17f888c493 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -1519,6 +1519,7 @@ static const NameToConvertMapType& lcl_GetConverters() { "com.sun.star.presentation.GraphicObjectShape" , ::WriteGraphicObjectShape }, { "com.sun.star.presentation.MediaShape" , ::WriteGraphicObjectShape }, +{ "com.sun.star.presentation.ChartShape" , ::WriteOLE2Shape }, { "com.sun.star.presentation.OLE2Shape", ::WriteOLE2Shape }, { "com.sun.star.presentation.TableShape" , ::WriteTableShape }, { "com.sun.star.presentation.TextShape", ::WriteTextShape }, ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: chart2/qa oox/source
chart2/qa/extras/chart2export.cxx | 14 ++ chart2/qa/extras/data/odp/tdf121189.odp |binary oox/source/export/shapes.cxx|1 + 3 files changed, 15 insertions(+) New commits: commit 0c5ac9d1cb39eac838a612092a8934a6ca12326f Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 24 17:29:08 2020 +0200 Commit: László Németh CommitDate: Mon Aug 31 10:12:41 2020 +0200 tdf#121189 PPTX export: fix missing chart Based on Regina Henschel's technical analysis and code pointer. Change-Id: Ifdea48c09d23dce495fa6bc90a9e1648dbb5ccb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101283 Tested-by: László Németh Reviewed-by: László Németh diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index fddfdc0c2e67..7e17c2f1307c 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -156,6 +156,7 @@ public: void testTdf119029(); void testTdf108022(); void testTdf121744(); +void testTdf121189(); void testTdf122031(); void testTdf115012(); void testTdf134118(); @@ -295,6 +296,7 @@ public: CPPUNIT_TEST(testTdf119029); CPPUNIT_TEST(testTdf108022); CPPUNIT_TEST(testTdf121744); +CPPUNIT_TEST(testTdf121189); CPPUNIT_TEST(testTdf122031); CPPUNIT_TEST(testTdf115012); CPPUNIT_TEST(testTdf134118); @@ -2577,6 +2579,18 @@ void Chart2ExportTest::testTdf121744() assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[2]", "val", YValueId ); } +void Chart2ExportTest::testTdf121189() +{ +load("/chart2/qa/extras/data/odp/", "tdf121189.odp"); +reload("Impress Office Open XML"); + +uno::Reference xDoc(mxComponent, uno::UNO_QUERY_THROW); +uno::Reference xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); +CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xPage->getCount()); +uno::Reference xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); +CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.OLE2Shape"), xShape->getShapeType()); +} + void Chart2ExportTest::testTdf122031() { //Checks pie chart data label format. diff --git a/chart2/qa/extras/data/odp/tdf121189.odp b/chart2/qa/extras/data/odp/tdf121189.odp new file mode 100644 index ..6f99e0054936 Binary files /dev/null and b/chart2/qa/extras/data/odp/tdf121189.odp differ diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 3121aa745a16..e7997226f689 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -1490,6 +1490,7 @@ static const NameToConvertMapType& lcl_GetConverters() { "com.sun.star.presentation.GraphicObjectShape" , ::WriteGraphicObjectShape }, { "com.sun.star.presentation.MediaShape" , ::WriteGraphicObjectShape }, +{ "com.sun.star.presentation.ChartShape" , ::WriteOLE2Shape }, { "com.sun.star.presentation.OLE2Shape", ::WriteOLE2Shape }, { "com.sun.star.presentation.TableShape" , ::WriteTableShape }, { "com.sun.star.presentation.TextShape", ::WriteTextShape }, ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: oox/source sw/qa writerfilter/source
oox/source/vml/vmlshape.cxx |9 + sw/qa/extras/ooxmlexport/data/tdf135660.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport15.cxx| 20 writerfilter/source/dmapper/DomainMapper_Impl.cxx |4 4 files changed, 33 insertions(+) New commits: commit 8ee88230c110ae90b439a52bc2906d6c5383967f Author: Daniel Arato (NISZ) AuthorDate: Mon Sep 7 11:50:53 2020 +0200 Commit: László Németh CommitDate: Fri Sep 11 10:19:18 2020 +0200 tdf#135660 DOCX import: fix OLE icon wrap distance The text wrap distance (also sometimes called "margin") of OLE VML icons used to be thrown away when a .docx file is opened. Change-Id: I79837421470dde5e68e916f87924b170ebf1d734 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102159 Tested-by: László Németh Reviewed-by: László Németh diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index f8a4c9000e66..905548bafb9e 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -911,6 +911,15 @@ Reference< XShape > SimpleShape::createPictureObject(const Reference< XShapes >& const GraphicHelper& rGraphicHelper = mrDrawing.getFilter().getGraphicHelper(); lcl_SetAnchorType(aPropSet, maTypeModel, rGraphicHelper); +const sal_Int32 nWrapDistanceLeft = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceLeft, 0, true, true); +const sal_Int32 nWrapDistanceRight = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceRight, 0, true, true); +const sal_Int32 nWrapDistanceTop = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceTop, 0, false, true); +const sal_Int32 nWrapDistanceBottom = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceBottom, 0, false, true); +aPropSet.setProperty(PROP_LeftMargin, uno::makeAny(nWrapDistanceLeft)); +aPropSet.setProperty(PROP_RightMargin, uno::makeAny(nWrapDistanceRight)); +aPropSet.setProperty(PROP_TopMargin, uno::makeAny(nWrapDistanceTop)); +aPropSet.setProperty(PROP_BottomMargin, uno::makeAny(nWrapDistanceBottom)); + if (maTypeModel.moCropBottom.has() || maTypeModel.moCropLeft.has() || maTypeModel.moCropRight.has() || maTypeModel.moCropTop.has()) { text::GraphicCrop aGraphicCrop; diff --git a/sw/qa/extras/ooxmlexport/data/tdf135660.docx b/sw/qa/extras/ooxmlexport/data/tdf135660.docx new file mode 100644 index ..2309c9b0ac09 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf135660.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx index 104e867a33ba..5aad7cc44f0e 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx @@ -674,6 +674,26 @@ DECLARE_OOXMLEXPORT_TEST(testImageSpaceSettings, "tdf135047_ImageSpaceSettings.f assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:drawing/wp:anchor", "distR", "90170"); } +// TODO: change this to an export test once wrap distance export (TDF#135663) is implemented +DECLARE_OOXMLIMPORT_TEST(testTdf13660, "tdf135660.docx") +{ +CPPUNIT_ASSERT_EQUAL(1, getShapes()); +const uno::Reference xShape = getShape(1); +const uno::Reference xOLEProps(xShape, uno::UNO_QUERY_THROW); +sal_Int32 nWrapDistanceLeft = -1; +sal_Int32 nWrapDistanceRight = -1; +sal_Int32 nWrapDistanceTop = -1; +sal_Int32 nWrapDistanceBottom = -1; +xOLEProps->getPropertyValue("LeftMargin") >>= nWrapDistanceLeft; +xOLEProps->getPropertyValue("RightMargin") >>= nWrapDistanceRight; +xOLEProps->getPropertyValue("TopMargin") >>= nWrapDistanceTop; +xOLEProps->getPropertyValue("BottomMargin") >>= nWrapDistanceBottom; +CPPUNIT_ASSERT_EQUAL_MESSAGE("Left wrap distance is wrong", static_cast(0), nWrapDistanceLeft); +CPPUNIT_ASSERT_EQUAL_MESSAGE("Right wrap distance is wrong", static_cast(400), nWrapDistanceRight); +CPPUNIT_ASSERT_EQUAL_MESSAGE("Top wrap distance is wrong", static_cast(300), nWrapDistanceTop); +CPPUNIT_ASSERT_EQUAL_MESSAGE("Bottom wrap distance is wrong", static_cast(199), nWrapDistanceBottom); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 6387d22b12a3..fc9c13e9c562 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -2271,6 +2271,10 @@ void DomainMapper_Impl::appendOLE( const OUString& rStreamName, const std::share "VertOrientPosition", "VertOrientRelation", "HoriOrientRelation", +"LeftMargin", +"RightMargin", +
[Libreoffice-commits] core.git: oox/source sw/qa sw/source writerfilter/source
oox/source/token/properties.txt |1 + oox/source/vml/vmlshape.cxx |1 + sw/qa/extras/ooxmlexport/data/tdf135665.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport15.cxx| 13 + sw/source/core/unocore/unoframe.cxx |8 ++-- writerfilter/source/dmapper/DomainMapper_Impl.cxx |1 + 6 files changed, 22 insertions(+), 2 deletions(-) New commits: commit 4b7ee7bd61f78be60211cc72ba36da987191266e Author: Daniel Arato (NISZ) AuthorDate: Wed Sep 2 15:46:56 2020 +0200 Commit: László Németh CommitDate: Mon Sep 7 13:11:44 2020 +0200 tdf#135665 DOCX: import tight wrap setting of VML shapes The wrap setting that OOXML calls "tight" and LibreOffice calls "contour" (== true) was not supported by the import code, only the export. Change-Id: I48739ffaad48e28df05fd87a9b51a14238dc47e5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101932 Tested-by: László Németh Reviewed-by: László Németh diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index 46200bf221ff..d50cd4bb124d 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -509,6 +509,7 @@ SubViewSize Subtotals Suffix Surround +SurroundContour SwapXAndYAxis Symbol SymbolColor diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index 85ad112bcfae..f8a4c9000e66 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -588,6 +588,7 @@ static void lcl_setSurround(PropertySet& rPropSet, const ShapeTypeModel& rTypeMo nSurround = css::text::WrapTextMode_NONE; rPropSet.setProperty(PROP_Surround, static_cast(nSurround)); +rPropSet.setProperty(PROP_SurroundContour, aWrapType == "tight"); } static void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel, const GraphicHelper& rGraphicHelper) diff --git a/sw/qa/extras/ooxmlexport/data/tdf135665.docx b/sw/qa/extras/ooxmlexport/data/tdf135665.docx new file mode 100644 index ..2400a1c1a46c Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf135665.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx index 4e39a5af0297..95770433a6ab 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx @@ -513,6 +513,19 @@ DECLARE_OOXMLIMPORT_TEST(TestTdf135653, "tdf135653.docx") CPPUNIT_ASSERT_EQUAL_MESSAGE("OLE bg color does not match!", aExpectedColor, aFillColor); } +DECLARE_OOXMLIMPORT_TEST(testTdf135665, "tdf135665.docx") +{ +uno::Reference xOLEProps1(getShape(1), uno::UNO_QUERY_THROW); +uno::Reference xOLEProps2(getShape(2), uno::UNO_QUERY_THROW); +bool bSurroundContour1 = false; +bool bSurroundContour2 = false; +xOLEProps1->getPropertyValue("SurroundContour") >>= bSurroundContour1; +xOLEProps2->getPropertyValue("SurroundContour") >>= bSurroundContour2; + +CPPUNIT_ASSERT_EQUAL_MESSAGE("OLE tight wrap setting not imported correctly", true, bSurroundContour1); +CPPUNIT_ASSERT_EQUAL_MESSAGE("OLE tight wrap setting not imported correctly", false, bSurroundContour2); +} + DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testAtPageShapeRelOrientation, "rotated_shape.fodt") { // invalid combination of at-page anchor and horizontal-rel="paragraph" diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index 2d122992d840..5d7b86fc37e0 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -752,15 +752,19 @@ bool BaseFrameProperties_Impl::FillBaseProperties(SfxItemSet& rToSet, const SfxI bRet &= aSh.PutValue(*pShTr, MID_SHADOW_TRANSPARENCE); rToSet.Put(aSh); } -const ::uno::Any* pSur = nullptr; +const ::uno::Any* pSur = nullptr; GetProperty(RES_SURROUND, MID_SURROUND_SURROUNDTYPE, pSur); +const ::uno::Any* pSurCont = nullptr; +GetProperty(RES_SURROUND, MID_SURROUND_CONTOUR, pSurCont); const ::uno::Any* pSurAnch = nullptr; GetProperty(RES_SURROUND, MID_SURROUND_ANCHORONLY, pSurAnch); if(pSur || pSurAnch) { SwFormatSurround aSrnd ( rFromSet.Get ( RES_SURROUND ) ); if(pSur) -bRet &= static_cast(aSrnd).PutValue(*pSur, MID_SURROUND_SURROUNDTYPE ); +bRet &= static_cast(aSrnd).PutValue(*pSur, MID_SURROUND_SURROUNDTYPE); +if(pSurCont) +bRet &= static_cast(aSrnd).PutValue(*pSurCont, MID_SURROUND_CONTOUR); if(pSurAnch) bRet &= static_cast(aSrnd).PutValue(*pSurAnch, MID_SURROUND_ANCHORONLY); rToSet.Put(aSrnd); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 0347453d6704..ec83a7c2d5f9 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - oox/source sw/qa sw/source writerfilter/source
oox/source/token/properties.txt |1 + oox/source/vml/vmlshape.cxx |1 + sw/qa/extras/ooxmlexport/data/tdf135665.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport15.cxx| 17 +++-- sw/source/core/unocore/unoframe.cxx |8 ++-- writerfilter/source/dmapper/DomainMapper_Impl.cxx | 17 + 6 files changed, 32 insertions(+), 12 deletions(-) New commits: commit 2048a2c268125f17a440ec449df4030b91758172 Author: Daniel Arato (NISZ) AuthorDate: Wed Sep 2 15:46:56 2020 +0200 Commit: Xisco Fauli CommitDate: Tue Sep 15 12:55:59 2020 +0200 tdf#135665 DOCX: import tight wrap setting of VML shapes The wrap setting that OOXML calls "tight" and LibreOffice calls "contour" (== true) was not supported by the import code, only the export. Change-Id: I48739ffaad48e28df05fd87a9b51a14238dc47e5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101932 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 4b7ee7bd61f78be60211cc72ba36da987191266e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102124 Tested-by: Jenkins Reviewed-by: Xisco Fauli diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index 41e33ea67c26..5ae85fd245e1 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -508,6 +508,7 @@ SubViewSize Subtotals Suffix Surround +SurroundContour SwapXAndYAxis Symbol SymbolColor diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index a1e5744db8da..d52e8e97fe1d 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -584,6 +584,7 @@ static void lcl_setSurround(PropertySet& rPropSet, const ShapeTypeModel& rTypeMo nSurround = css::text::WrapTextMode_NONE; rPropSet.setProperty(PROP_Surround, static_cast(nSurround)); +rPropSet.setProperty(PROP_SurroundContour, aWrapType == "tight"); } static void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel, const GraphicHelper& rGraphicHelper) diff --git a/sw/qa/extras/ooxmlexport/data/tdf135665.docx b/sw/qa/extras/ooxmlexport/data/tdf135665.docx new file mode 100644 index ..2400a1c1a46c Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf135665.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx index 792e919394b7..ab204e9c5e67 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx @@ -41,7 +41,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf133370_columnBreak, "tdf133370_columnBreak.odt") CPPUNIT_ASSERT_EQUAL(1, getPages()); } -DECLARE_OOXMLIMPORT_TEST(testTdf131801, "tdf131801.docx") +DECLARE_OOXMLEXPORT_TEST(testTdf131801, "tdf131801.docx") { CPPUNIT_ASSERT_EQUAL(1, getPages()); @@ -126,6 +126,19 @@ DECLARE_OOXMLEXPORT_TEST(testTdf134063, "tdf134063.docx") CPPUNIT_ASSERT_EQUAL(sal_Int32(720), getXPath(pDump, "//page[1]/body/txt[1]/Text[3]", "nWidth").toInt32()); } +DECLARE_OOXMLEXPORT_TEST(testTdf135665, "tdf135665.docx") +{ +uno::Reference xOLEProps1(getShape(1), uno::UNO_QUERY_THROW); +uno::Reference xOLEProps2(getShape(2), uno::UNO_QUERY_THROW); +bool bSurroundContour1 = false; +bool bSurroundContour2 = false; +xOLEProps1->getPropertyValue("SurroundContour") >>= bSurroundContour1; +xOLEProps2->getPropertyValue("SurroundContour") >>= bSurroundContour2; + +CPPUNIT_ASSERT_EQUAL_MESSAGE("OLE tight wrap setting not imported correctly", true, bSurroundContour1); +CPPUNIT_ASSERT_EQUAL_MESSAGE("OLE tight wrap setting not imported correctly", false, bSurroundContour2); +} + DECLARE_OOXMLEXPORT_TEST(testAtPageShapeRelOrientation, "rotated_shape.fodt") { // invalid combination of at-page anchor and horizontal-rel="paragraph" @@ -179,7 +192,7 @@ DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromBottomMarginHasFooter, CPPUNIT_ASSERT_EQUAL(static_cast(1147), nAnchoredHeight); } -DECLARE_OOXMLIMPORT_TEST(TestTdf132483, "tdf132483.docx") +DECLARE_OOXMLEXPORT_TEST(TestTdf132483, "tdf132483.docx") { uno::Reference xOLEProps(getShape(1), uno::UNO_QUERY_THROW); sal_Int16 nVRelPos = -1; diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index a04ac6908b92..c96dc6676dda 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -751,15 +751,19 @@ bool BaseFrameProperties_Impl::FillBaseProperties(SfxItemSet& rToSet, const SfxI bRet &= aSh.PutValue(*pShTr, MID_SHADOW_TRANSPARENCE); rToSet.Put(aSh); } -const ::uno::Any* pSur = nullptr; +const ::uno::Any* pSur = nullptr; GetProperty(RES_SURROUND, MID_SURROUND_SURROUNDTYPE, pSur); +const ::uno::Any* pSurCont = nullptr; +GetProperty(RES_SURROUND,
[Libreoffice-commits] core.git: sw/source
sw/source/uibase/dochdl/swdtflvr.cxx | 18 ++ 1 file changed, 18 insertions(+) New commits: commit a354b7f7476513e5b1b4bbf1986b483cf122d47b Author: Daniel Arato (NISZ) AuthorDate: Tue Sep 8 16:56:58 2020 +0200 Commit: László Németh CommitDate: Mon Sep 14 12:51:21 2020 +0200 tdf#135669 sw: drag and drop other files as OLE from file managers. Native text, PDF and image file formats were supported, but now spreadsheet and DOCX documents, too. The same feature was already implemented in e.g. Impress. Note: DOCX files inserted as OLE objects yet, and not linked files in sections, as ODTs (but it's possible saving and printing them via Save As option of the local menu of the OLE object). Change-Id: Ia2fafe4a0b79dc0c66eaec5ad073c994f98e1345 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102263 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx index 52c6b47d469f..745731327a09 100644 --- a/sw/source/uibase/dochdl/swdtflvr.cxx +++ b/sw/source/uibase/dochdl/swdtflvr.cxx @@ -2246,6 +2246,19 @@ bool SwTransferable::PasteOLE( TransferableDataHelper& rData, SwWrtShell& rSh, } } } +else if (rData.HasFormat(SotClipboardFormatId::SIMPLE_FILE)) +{ +OUString sFile; +if (rData.GetString(nFormat, sFile) && !sFile.isEmpty()) +{ +// Copied from sd::View::DropInsertFileHdl +uno::Sequence< beans::PropertyValue > aMedium(1); +aMedium[0].Name = "URL"; +aMedium[0].Value <<= sFile; +SwDocShell* pDocSh = rSh.GetDoc()->GetDocShell(); +xObj = pDocSh->GetEmbeddedObjectContainer().InsertEmbeddedObject(aMedium, aName); +} +} } if ( xStrm.is() && !xObj.is() ) @@ -3023,6 +3036,11 @@ bool SwTransferable::PasteFileName( TransferableDataHelper& rData, rSh.StartInsertRegionDialog( aSect ); // starts dialog asynchronously bRet = true; } +else if (SwPasteSdr::Insert == nAction && rData.HasFormat(SotClipboardFormatId::SIMPLE_FILE)) +{ +// insert file as OLE +PasteOLE(rData, rSh, nFormat, nActionFlags, nullptr == pPt); +} else if( SwPasteSdr::SetAttr == nAction || ( bIsURLFile && SwPasteSdr::Insert == nAction )) { ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/odfexport/odfexport.cxx | 77 +++ 1 file changed, 34 insertions(+), 43 deletions(-) New commits: commit f83f06475996cdf072a230aa8c0abe6d85b278ec Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:12:52 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 07:14:50 2020 +0200 tdf#129423 sw: export-only tests, part 2 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the test fail if parsing fails for any reason. Change-Id: I2ced87fe8186a82e8c4e591d3ee6832cae60f7f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101713 Reviewed-by: Mike Kaganski Tested-by: Mike Kaganski diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index cb131ece62de..20c8b25f0b48 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -262,25 +262,25 @@ DECLARE_ODFEXPORT_TEST(testTdf103567, "tdf103567.odt") CPPUNIT_ASSERT_EQUAL(sal_Int32( 408), rect.Height); } -DECLARE_ODFEXPORT_TEST(testUserFieldDecl, "user-field-decl.odt") +DECLARE_ODFEXPORT_EXPORTONLY_TEST(testUserFieldDecl, "user-field-decl.odt") { CPPUNIT_ASSERT_EQUAL(1, getPages()); -if (xmlDocUniquePtr pXmlDoc = parseExport("styles.xml")) -// Without the accompanying fix in place, this test would have failed with 'Expected: 2; -// Actual: 1', i.e. the in-table field had no declaration (in the header), while the -// outside-table one had the declaration. -assertXPath(pXmlDoc, "//style:header/text:user-field-decls/text:user-field-decl", 2); +xmlDocUniquePtr pXmlDoc = parseExport("styles.xml"); +// Without the accompanying fix in place, this test would have failed with 'Expected: 2; +// Actual: 1', i.e. the in-table field had no declaration (in the header), while the +// outside-table one had the declaration. +assertXPath(pXmlDoc, "//style:header/text:user-field-decls/text:user-field-decl", 2); } -DECLARE_ODFEXPORT_TEST(testUserFieldDeclFly, "user-field-decl-fly.odt") +DECLARE_ODFEXPORT_EXPORTONLY_TEST(testUserFieldDeclFly, "user-field-decl-fly.odt") { CPPUNIT_ASSERT_EQUAL(1, getShapes()); CPPUNIT_ASSERT_EQUAL(1, getPages()); -if (xmlDocUniquePtr pXmlDoc = parseExport("styles.xml")) -// Without the accompanying fix in place, this test would have failed with 'Expected: 2; -// Actual: 1', i.e. the in-textframe field had no declaration (in the header), while the -// outside-textframe one had the declaration. -assertXPath(pXmlDoc, "//style:header/text:user-field-decls/text:user-field-decl", 2); +xmlDocUniquePtr pXmlDoc = parseExport("styles.xml"); +// Without the accompanying fix in place, this test would have failed with 'Expected: 2; +// Actual: 1', i.e. the in-textframe field had no declaration (in the header), while the +// outside-textframe one had the declaration. +assertXPath(pXmlDoc, "//style:header/text:user-field-decls/text:user-field-decl", 2); } DECLARE_ODFEXPORT_TEST(testFramebackgrounds, "framebackgrounds.odt") @@ -2145,36 +2145,32 @@ DECLARE_ODFEXPORT_TEST(testTdf132642_keepWithNextTable, "tdf132642_keepWithNextT CPPUNIT_ASSERT_EQUAL_MESSAGE("Row splits over 2 pages", 2, getPages()); } -DECLARE_ODFEXPORT_TEST(testImageMimetype, "image-mimetype.odt") +DECLARE_ODFEXPORT_EXPORTONLY_TEST(testImageMimetype, "image-mimetype.odt") { CPPUNIT_ASSERT_EQUAL(1, getShapes()); CPPUNIT_ASSERT_EQUAL(1, getPages()); // Test that the loext:mimetype attribute is written for exported images, tdf#109202 -if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml")) -{ -// Original image (svg) -assertXPath(pXmlDoc, "/office:document-content/office:body/office:text/text:p/draw:frame/draw:image[@draw:mime-type='image/svg+xml']"); -} +xmlDocUniquePtr pXmlDoc = parseExport("content.xml"); +// Original image (svg) +assertXPath(pXmlDoc, "/office:document-content/office:body/office:text/text:p/draw:frame/draw:image[@draw:mime-type='image/svg+xml']"); } -DECLARE_ODFEXPORT_TEST(testEmbeddedFontProps, "embedded-font-props.odt") +DECLARE_ODFEXPORT_EXPORTONLY_TEST(testEmbeddedFontProps, "embedded-font-props.odt") { CPPUNIT_ASSERT_EQUAL(1, getPages()); #if !defined(MACOSX) // Test that font style/weight of embedded fonts is exposed. // Test file is a normal ODT, except EmbedFonts is set to true in settings.xml. -if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml")) -{ -// These failed, the attributes were missing. -assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[1]", "font-style", "normal"); -assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[1]",
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport5.cxx | 102 +- 1 file changed, 45 insertions(+), 57 deletions(-) New commits: commit f51aaf80002c74af78c8934a3dff4938e1f55acd Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:29:45 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 08:46:55 2020 +0200 tdf#129423 sw: export-only tests, part 9 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I0989c38742f223937d8b043adeec431c99d4a0e9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101720 Tested-by: Jenkins Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx index 7ef68c54404a..6c07f4534ed4 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx @@ -109,11 +109,11 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo76589 , "fdo76589.docx") assertXPath ( pXmlDoc, "/w:numbering/w:abstractNum[1]/w:lvl[1]/w:lvlText","val","%1" ); } -DECLARE_OOXMLEXPORT_TEST(testDecimalNumberingNoLeveltext, "decimal-numbering-no-leveltext.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testDecimalNumberingNoLeveltext, "decimal-numbering-no-leveltext.docx") { // This was "%1", not empty: we turned a kind-of-none numbering into a decimal one. -if (xmlDocUniquePtr pXmlDoc = parseExport("word/numbering.xml")) -assertXPath (pXmlDoc, "/w:numbering/w:abstractNum[1]/w:lvl[1]/w:lvlText","val", ""); +xmlDocUniquePtr pXmlDoc = parseExport("word/numbering.xml"); +assertXPath(pXmlDoc, "/w:numbering/w:abstractNum[1]/w:lvl[1]/w:lvlText","val",""); } DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testNoDuplicateAttributeExport, "duplicate-east-asia.odt") @@ -537,16 +537,12 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo79540, "fdo79540.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing", 1); } -DECLARE_OOXMLEXPORT_TEST(testFDO79062, "fdo79062.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFDO79062, "fdo79062.docx") { xmlDocUniquePtr pXmlFootNotes = parseExport("word/footnotes.xml"); -if (!pXmlFootNotes) -return; assertXPath(pXmlFootNotes, "/w:footnotes", "Ignorable", "w14 wp14"); xmlDocUniquePtr pXmlEndNotes = parseExport("word/endnotes.xml"); -if (!pXmlEndNotes) -return; assertXPath(pXmlEndNotes, "/w:endnotes", "Ignorable", "w14 wp14"); //tdf#93121 don't add fake tabs in front of extra footnote paragraphs @@ -624,13 +620,11 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFDO79915, "fdo79915.docx") assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[9]/w:t", "How much buoyancy does the water provide?"); } -DECLARE_OOXMLEXPORT_TEST(testfdo79817, "fdo79817.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo79817, "fdo79817.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml")) -{ -assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtPr/w:dataBinding", "storeItemID", "{9222E47B-A68B-4AEB-9855-21C912B9D3D2}"); -assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtPr/w:dataBinding", "xpath", "/ns0:properties[1]/documentManagement[1]/ns2:Responsible_x0020_Officer_x0020_Title[1]"); -} +xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); +assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtPr/w:dataBinding", "storeItemID", "{9222E47B-A68B-4AEB-9855-21C912B9D3D2}"); +assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtPr/w:dataBinding", "xpath", "/ns0:properties[1]/documentManagement[1]/ns2:Responsible_x0020_Officer_x0020_Title[1]"); } @@ -1028,17 +1022,15 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFD083057, "fdo83057.docx") assertXPath(pXmlDoc, "//mc:AlternateContent//w:sdt", 0); } -DECLARE_OOXMLEXPORT_TEST(testHeaderBorder, "header-border.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testHeaderBorder, "header-border.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml")) -{ -// This was 0, as header margin was lost during import. -assertXPath(pXmlDoc, "//w:pgMar", "header", "720"); -// This was 33: 33 points -> 660 twips. We counted 900 - 240 (distance -// of page and body frame) instead of 720 - 240 (distance of page and -// header frame). -assertXPath(pXmlDoc, "//w:pgBorders/w:top", "space", "24"); -} +xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); +// This was 0, as header margin was lost during import. +assertXPath(pXmlDoc, "//w:pgMar", "header", "720"); +// This was 33: 33 points -> 660 twips. We counted 900 - 240 (distance +// of page and body frame) instead of 720 - 240 (distance of page and +// header frame). +assertXPath(pXmlDoc,
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 185 +-- 1 file changed, 80 insertions(+), 105 deletions(-) New commits: commit 87c6b7a8dea4f59b09001d4d6364cb1835d10903 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:21:53 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 07:19:19 2020 +0200 tdf#129423 sw: export-only tests, part 3 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I0b48977e8e53aa04b250ad20c87ae462552f855f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101714 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 9260cc8f4f7f..26151ebcc0c9 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -67,10 +67,10 @@ protected: } }; -DECLARE_OOXMLEXPORT_TEST(testfdo81381, "fdo81381.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo81381, "fdo81381.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml")) -assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:object[1]/o:OLEObject[1]", "DrawAspect", "Icon"); +xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); +assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:object[1]/o:OLEObject[1]", "DrawAspect", "Icon"); } DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testSdtAlias, "sdt-alias.docx") @@ -81,11 +81,11 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testSdtAlias, "sdt-alias.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:sdt/w:sdtPr/w:alias", "val", "Subtitle"); } -DECLARE_OOXMLEXPORT_TEST(testFooterBodyDistance, "footer-body-distance.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFooterBodyDistance, "footer-body-distance.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport()) -// Page break was exported as section break, this was 0 -assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:br", 1); +xmlDocUniquePtr pXmlDoc = parseExport(); +// Page break was exported as section break, this was 0 +assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:br", 1); } // Check for correct header/footer with special first page with TOC inside: @@ -149,21 +149,21 @@ DECLARE_OOXMLEXPORT_TEST(testfdo81031, "fdo81031.docx") CPPUNIT_ASSERT_EQUAL( static_cast(148), xBitmap->getSize().Height ); } -DECLARE_OOXMLEXPORT_TEST(testPlausableBorder, "plausable-border.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testPlausableBorder, "plausable-border.docx") { // sw::util::IsPlausableSingleWordSection() did not merge two page styles due to borders. -if (xmlDocUniquePtr pXmlDoc = parseExport()) -// Page break was exported as section break, this was 0 -assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:br", 1); +xmlDocUniquePtr pXmlDoc = parseExport(); +// Page break was exported as section break, this was 0 +assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:br", 1); CPPUNIT_ASSERT_EQUAL( 2, getPages() ); } -DECLARE_OOXMLEXPORT_TEST(testUnwantedSectionBreak, "unwanted-section-break.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testUnwantedSectionBreak, "unwanted-section-break.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport()) -// This was 2: an additional sectPr was added to the document. -assertXPath(pXmlDoc, "//w:sectPr", 1); +xmlDocUniquePtr pXmlDoc = parseExport(); +// This was 2: an additional sectPr was added to the document. +assertXPath(pXmlDoc, "//w:sectPr", 1); } DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo80897 , "fdo80897.docx") @@ -188,11 +188,11 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFdo80902, "fdo80902.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:sectPr/w:docGrid", "type", "lines"); } -DECLARE_OOXMLEXPORT_TEST(testParaShading, "para-shading.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testParaShading, "para-shading.docx") { // Make sure the themeColor attribute is not written when it would be empty. -if (xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml")) -assertXPathNoAttribute(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:shd", "themeColor"); +xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); +assertXPathNoAttribute(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:shd", "themeColor"); } DECLARE_OOXMLEXPORT_TEST(testFirstHeaderFooter, "first-header-footer.docx") @@ -233,16 +233,14 @@ DECLARE_OOXMLEXPORT_TEST(testfdo83428, "fdo83428.docx") CPPUNIT_ASSERT_EQUAL(OUString("Document"), getProperty(xUDProps, "Testing")); } -DECLARE_OOXMLEXPORT_TEST(testShapeInFloattable, "shape-in-floattable.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testShapeInFloattable, "shape-in-floattable.docx") { -if (xmlDocUniquePtr pXmlDoc =
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport3.cxx |8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) New commits: commit bc01e76bab663826c7c0f125cbbfc790f7de4a98 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:28:06 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 07:22:56 2020 +0200 tdf#129423 sw: export-only tests, part 7 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I11307932b216d0bfe60a3ef126bbea13046fa0a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101718 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx index 2596c8d5d5e4..76ccf318e8c9 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx @@ -489,14 +489,12 @@ DECLARE_OOXMLEXPORT_TEST(testSmartart, "smartart.docx") CPPUNIT_ASSERT_EQUAL(OUString("RenderedShapes"), nValue); // Rendered bitmap has the proper name } -DECLARE_OOXMLEXPORT_TEST(testFontNameIsEmpty, "font-name-is-empty.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFontNameIsEmpty, "font-name-is-empty.docx") { // Check no empty font name is exported // This test does not fail, if the document contains a font with empty name. xmlDocUniquePtr pXmlFontTable = parseExport("word/fontTable.xml"); -if (!pXmlFontTable) -return; xmlXPathObjectPtr pXmlObj = getXPathNode(pXmlFontTable, "/w:fonts/w:font"); xmlNodeSetPtr pXmlNodes = pXmlObj->nodesetval; sal_Int32 length = xmlXPathNodeSetGetLength(pXmlNodes); @@ -1109,14 +1107,12 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testArrowMarker, "tdf123346_ArrowMarker.docx "/a:graphic/a:graphicData/wps:wsp/wps:spPr/a:ln/a:tailEnd", "type", "arrow"); } -DECLARE_OOXMLEXPORT_TEST(testShapeLineWidth, "tdf92526_ShapeLineWidth.odt") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testShapeLineWidth, "tdf92526_ShapeLineWidth.odt") { CPPUNIT_ASSERT_EQUAL(1, getShapes()); CPPUNIT_ASSERT_EQUAL(1, getPages()); // tdf#92526: Make sure that line with stays 0. xmlDocUniquePtr pXml = parseExport("word/document.xml"); -if (!pXml) -return; // "w" attribute was not exported. assertXPath(pXml, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing" ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport15.cxx | 15 +++ 1 file changed, 3 insertions(+), 12 deletions(-) New commits: commit 78bc1c3c0c71eb67046db5596eb8d442ad564310 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:26:53 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 07:21:56 2020 +0200 tdf#129423 sw: export-only tests, part 6 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: Ie65ca79192e2996954e465bc4e8c5f9f47fbc87c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101717 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx index 1eff36be4eb6..48cf77e84f0b 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx @@ -465,14 +465,12 @@ DECLARE_OOXMLIMPORT_TEST(TestTdf135653, "tdf135653.docx") CPPUNIT_ASSERT_EQUAL_MESSAGE("OLE bg color does not match!", aExpectedColor, aFillColor); } -DECLARE_OOXMLEXPORT_TEST(testAtPageShapeRelOrientation, "rotated_shape.fodt") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testAtPageShapeRelOrientation, "rotated_shape.fodt") { // invalid combination of at-page anchor and horizontal-rel="paragraph" // caused relativeFrom="column" instead of relativeFrom="page" xmlDocUniquePtr pXmlDocument = parseExport("word/document.xml"); -if (!pXmlDocument) -return; assertXPathContent(pXmlDocument, "/w:document/w:body/w:p/w:r/mc:AlternateContent[1]/mc:Choice/w:drawing/wp:anchor" "/wp:positionH/wp:posOffset", "-480060"); @@ -502,7 +500,7 @@ DECLARE_OOXMLEXPORT_TEST(testAtPageShapeRelOrientation, "rotated_shape.fodt") CPPUNIT_ASSERT(style.indexOf("v-text-anchor:middle") != -1); } -DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromBottomMarginHasFooter, +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testRelativeAnchorHeightFromBottomMarginHasFooter, "tdf133070_testRelativeAnchorHeightFromBottomMarginHasFooter.docx") { // tdf#133070 The height was set relative to page print area bottom, @@ -510,8 +508,6 @@ DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromBottomMarginHasFooter, // Note: page print area bottom = margin + footer height. // In this case the footer exists. xmlDocUniquePtr pXmlDoc = parseLayoutDump(); -if (!pXmlDoc) -return; assertXPath(pXmlDoc, "//SwAnchoredDrawObject/bounds", "height", "1147"); } @@ -543,7 +539,7 @@ DECLARE_OOXMLIMPORT_TEST(TestTdf132483, "tdf132483.docx") text::RelOrientation::PAGE_FRAME , nHRelPos); } -DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromBottomMarginNoFooter, +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testRelativeAnchorHeightFromBottomMarginNoFooter, "tdf133070_testRelativeAnchorHeightFromBottomMarginNoFooter.docx") { // tdf#133070 The height was set relative to page print area bottom, @@ -551,17 +547,12 @@ DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromBottomMarginNoFooter, // Note: page print area bottom = margin + footer height. // In this case the footer does not exist, so OpenDocument and OOXML margins are the same. xmlDocUniquePtr pXmlDoc = parseLayoutDump(); -if (!pXmlDoc) -return; assertXPath(pXmlDoc, "//SwAnchoredDrawObject/bounds", "height", "1147"); } DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf133702, "tdf133702.docx") { xmlDocUniquePtr pXmlDocument = parseExport("word/document.xml"); -if (!pXmlDocument) -return; - assertXPath(pXmlDocument, "/w:document/w:body/w:p[1]/w:pPr/w:framePr"); } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 30 ++ 1 file changed, 10 insertions(+), 20 deletions(-) New commits: commit 4419b19715fdc65728b559d9fc6e36c9e66bc562 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:31:05 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 07:25:02 2020 +0200 tdf#129423 sw: export-only tests, part 11 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: Idf19f08a23a9097e35bf9a2ea71d7f99b9869183 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101722 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index 08f4826277c9..2e8c2c45aa42 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -465,12 +465,10 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testPictureEffectPreservation, "picture-effe "rad", 63500); // actually, it returns 63360 } -DECLARE_OOXMLEXPORT_TEST(testPictureArtisticEffectPreservation, "picture-artistic-effects-preservation.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testPictureArtisticEffectPreservation, "picture-artistic-effects-preservation.docx") { xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); xmlDocUniquePtr pRelsDoc = parseExport("word/_rels/document.xml.rels"); -if (!pXmlDoc || !pRelsDoc) - return; uno::Reference xNameAccess = packages::zip::ZipFileAccess::createWithURL( comphelper::getComponentContext(m_xSFactory), maTempFile.GetURL()); @@ -581,10 +579,9 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testNestedAlternateContent, "nestedAlternate // Currently LibreOffice exports custom geometry for this hexagon, not preset shape. // When LibreOffice can export preset shapes with correct modifiers, then this test can be re-enabled. -DECLARE_OOXMLEXPORT_TEST(test76317, "test76317.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(test76317, "test76317.docx") { xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); -if (!pXmlDoc) return; assertXPath(pXmlDoc, "/w:document[1]/w:body[1]/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:prstGeom[1]", "prst", "hexagon"); } @@ -677,15 +674,13 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testLockedCanvas, "fdo78658.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:inline/a:graphic/a:graphicData/lc:lockedCanvas", 1); } -DECLARE_OOXMLEXPORT_TEST(fdo78474, "fdo78474.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(fdo78474, "fdo78474.docx") { xmlDocUniquePtr pXmlDoc1 = parseExport("word/document.xml"); -if (!pXmlDoc1) return; //docx file after RT is getting corrupted. assertXPath(pXmlDoc1, "/w:document[1]/w:body[1]/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:txbx[1]/w:txbxContent[1]/w:p[1]/w:r[1]/w:drawing[1]/wp:inline[1]/a:graphic[1]/a:graphicData[1]/pic:pic[1]/pic:blipFill[1]/a:blip[1]", "embed", "rId2"); xmlDocUniquePtr pXmlDoc2 = parseExport("word/_rels/document.xml.rels"); -if (!pXmlDoc2) return; assertXPath(pXmlDoc2,"/rels:Relationships/rels:Relationship[2]","Id","rId2"); } @@ -764,13 +759,10 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo78663, "fdo78663.docx") assertXPath(pXmlDoc,"/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:anchor/a:graphic/a:graphicData/wps:wsp/wps:txbx/w:txbxContent/w:p/w:r/w:pict",1); } -DECLARE_OOXMLEXPORT_TEST(testFdo78957, "fdo78957.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFdo78957, "fdo78957.docx") { xmlDocUniquePtr pXmlHeader = parseExport("word/header2.xml"); -if(!pXmlHeader) -return; - const sal_Int64 IntMax = SAL_MAX_INT32; sal_Int64 cx = 0, cy = 0; cx = getXPath(pXmlHeader,"/w:hdr[1]/w:p[1]/w:r[1]/mc:AlternateContent[1]/mc:Choice[1]/w:drawing[1]/wp:anchor[1]/wp:extent[1]","cx").toInt64(); @@ -923,16 +915,14 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf118242, "tdf118242.odt") } -DECLARE_OOXMLEXPORT_TEST(testWrapTightThrough, "wrap-tight-through.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testWrapTightThrough, "wrap-tight-through.docx") { // These were wrapSquare without a wrap polygon before. -if (xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml")) -{ -// The first shape should be wrapThrough with a wrap polygon (was wrapSquare). -assertXPath(pXmlDoc, "//w:drawing/wp:anchor[1]/wp:wrapThrough/wp:wrapPolygon/wp:start", "x", "-1104"); -// The second shape should be wrapTight with a wrap polygon (was wrapSquare). -assertXPath(pXmlDoc,
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 58 ++ 1 file changed, 28 insertions(+), 30 deletions(-) New commits: commit a53e0459280a06a3794cd2a83fd7fbca90fb7ea5 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:32:05 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 07:28:46 2020 +0200 tdf#129423 sw: export-only tests, part 12 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I847248fdf3c72ba6e5a4f40337d644918d02d07c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101723 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index a62a3035bf03..e5fd69650911 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -75,42 +75,40 @@ DECLARE_OOXMLEXPORT_TEST(testFdo55381, "fdo55381.docx") //TODO: frames not located on the correct pages } -DECLARE_OOXMLEXPORT_TEST(testDocm, "hello.docm") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testDocm, "hello.docm") { // Make sure that we check the name of the export filter. // This was application/vnd.ms-word.document.macroEnabled.main+xml when the // name of the import filter was checked. -if (xmlDocUniquePtr pXmlDoc = parseExport("[Content_Types].xml")) -assertXPath(pXmlDoc, - "/ContentType:Types/ContentType:Override[@PartName='/word/document.xml']", -"ContentType", - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"); +xmlDocUniquePtr pXmlDoc = parseExport("[Content_Types].xml"); +assertXPath(pXmlDoc, + "/ContentType:Types/ContentType:Override[@PartName='/word/document.xml']", +"ContentType", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"); } -DECLARE_OOXMLEXPORT_TEST(testDefaultContentTypes, "fdo55381.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testDefaultContentTypes, "fdo55381.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport("[Content_Types].xml")) -{ -assertXPath(pXmlDoc, -"/ContentType:Types/ContentType:Default[@Extension='xml']", -"ContentType", -"application/xml"); +xmlDocUniquePtr pXmlDoc = parseExport("[Content_Types].xml"); +assertXPath(pXmlDoc, +"/ContentType:Types/ContentType:Default[@Extension='xml']", +"ContentType", +"application/xml"); -assertXPath(pXmlDoc, - "/ContentType:Types/ContentType:Default[@Extension='rels']", -"ContentType", - "application/vnd.openxmlformats-package.relationships+xml"); +assertXPath(pXmlDoc, +"/ContentType:Types/ContentType:Default[@Extension='rels']", +"ContentType", +"application/vnd.openxmlformats-package.relationships+xml"); -assertXPath(pXmlDoc, -"/ContentType:Types/ContentType:Default[@Extension='png']", -"ContentType", -"image/png"); +assertXPath(pXmlDoc, +"/ContentType:Types/ContentType:Default[@Extension='png']", +"ContentType", +"image/png"); -assertXPath(pXmlDoc, - "/ContentType:Types/ContentType:Default[@Extension='jpeg']", -"ContentType", -"image/jpeg"); -} +assertXPath(pXmlDoc, +"/ContentType:Types/ContentType:Default[@Extension='jpeg']", +"ContentType", +"image/jpeg"); } DECLARE_SW_ROUNDTRIP_TEST(testDocmSave, "hello.docm", nullptr, DocmTest) @@ -1121,11 +1119,11 @@ DECLARE_OOXMLEXPORT_TEST(testTdf121670_columnsInSectionsOnly, "tdf121670_columns CPPUNIT_ASSERT_EQUAL_MESSAGE("# of columns", sal_Int16(0), xTextColumns->getColumnCount()); } -DECLARE_OOXMLEXPORT_TEST(testTdf106492, "tdf106492.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf106492, "tdf106492.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport()) -// This was 4: an additional sectPr was added to the document. -assertXPath(pXmlDoc, "//w:sectPr", 3); +xmlDocUniquePtr pXmlDoc = parseExport(); +// This was 4: an additional sectPr was added to the document. +assertXPath(pXmlDoc, "//w:sectPr", 3); } DECLARE_OOXMLEXPORT_TEST(testTdf107104, "tdf107104.docx") ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx | 132 +++--- 1 file changed, 57 insertions(+), 75 deletions(-) New commits: commit c41d937fdd97238fe7787f97a51b3e2a4c72d30a Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:33:38 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 07:30:17 2020 +0200 tdf#129423 sw: export-only tests, part 13 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I276b520de1853fa5665daec11208fa8bf165841b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101724 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx index b4da04e47f11..eaf33fdda6b0 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx @@ -371,9 +371,9 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo78599,"fdo78599.docx") assertXPath ( pXmlDoc, "/w:document/w:body/w:p[1]/w:hyperlink/w:r[6]/w:fldChar", "fldCharType", "end" ); // Check for automatic hyphenation -if (xmlDocUniquePtr pSettingsXml = parseExport("word/settings.xml")) -// This failed as w:settings had no w:autoHyphenation child. -assertXPath(pSettingsXml, "/w:settings/w:autoHyphenation"); +xmlDocUniquePtr pSettingsXml = parseExport("word/settings.xml"); +// This failed as w:settings had no w:autoHyphenation child. +assertXPath(pSettingsXml, "/w:settings/w:autoHyphenation"); } DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo78886, "fdo78886.docx") @@ -401,55 +401,45 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFDO78590, "FDO78590.docx") assertXPath ( pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:framePr", "h", "1669" ); } -DECLARE_OOXMLEXPORT_TEST(testSdtCitationRun, "sdt-citation-run.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testSdtCitationRun, "sdt-citation-run.docx") { // The problem was that the SDT was around the whole paragraph, not only around the citation field. -if (xmlDocUniquePtr pXmlDoc = parseExport()) -{ -assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r[1]/w:t", "Before sdt."); -assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtContent/w:r/w:instrText", " CITATION BBC11 \\l 1033 "); -assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r[2]/w:t", "After sdt."); -} +xmlDocUniquePtr pXmlDoc = parseExport(); +assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r[1]/w:t", "Before sdt."); +assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtContent/w:r/w:instrText", " CITATION BBC11 \\l 1033 "); +assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r[2]/w:t", "After sdt."); } -DECLARE_OOXMLEXPORT_TEST(testParagraphSdt, "paragraph-sdt.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testParagraphSdt, "paragraph-sdt.docx") { // The problem was that the SDT was around the run only, not the whole paragraph. -if (xmlDocUniquePtr pXmlDoc = parseExport()) -{ -// The path to w:sdt contained a w:p. -assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc/w:sdt"); -} +xmlDocUniquePtr pXmlDoc = parseExport(); +// The path to w:sdt contained a w:p. +assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc/w:sdt"); } -DECLARE_OOXMLEXPORT_TEST(testSdt2Run, "sdt-2-para.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testSdt2Run, "sdt-2-para.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport()) -{ -// The problem was that was closed after "first", not after "second", so the second assert failed. -assertXPathContent(pXmlDoc, "/w:document/w:body/w:sdt/w:sdtContent/w:p[1]/w:r/w:t", "first"); -assertXPathContent(pXmlDoc, "/w:document/w:body/w:sdt/w:sdtContent/w:p[2]/w:r/w:t", "second"); -// Make sure the third paragraph is still outside . -assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r/w:t", "third"); -} +xmlDocUniquePtr pXmlDoc = parseExport(); +// The problem was that was closed after "first", not after "second", so the second assert failed. +assertXPathContent(pXmlDoc, "/w:document/w:body/w:sdt/w:sdtContent/w:p[1]/w:r/w:t", "first"); +assertXPathContent(pXmlDoc, "/w:document/w:body/w:sdt/w:sdtContent/w:p[2]/w:r/w:t", "second"); +// Make sure the third paragraph is still outside . +assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r/w:t", "third"); } -DECLARE_OOXMLEXPORT_TEST(test2Id, "2-id.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(test2Id, "2-id.docx") { -if (xmlDocUniquePtr pXmlDoc = parseExport()) -{ -// This was 2, but only one w:id is allowed. -assertXPath(pXmlDoc, "//w:sdtPr/w:id", 1); -} +xmlDocUniquePtr pXmlDoc = parseExport(); +// This was 2, but
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport14.cxx |8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) New commits: commit 0e3e0b04395de673e0cc9709de360e5cf95c1cc7 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:25:43 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 09:22:38 2020 +0200 tdf#129423 sw: export-only tests, part 5 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I85caa7c9f88316d733826fdc839dd7d33ec845a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101716 Tested-by: Jenkins Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx index 88f86f57da67..bcd96e2491cc 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx @@ -1234,7 +1234,7 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf108505, "tdf108505.docx") getProperty(xText, "CharFontName")); } -DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromTopMarginHasHeader, +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testRelativeAnchorHeightFromTopMarginHasHeader, "tdf123324_testRelativeAnchorHeightFromTopMarginHasHeader.docx") { // tdf#123324 The height was set relative to page print area top, @@ -1242,12 +1242,10 @@ DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromTopMarginHasHeader, // Note: page print area top = margin + header height. // In this case the header exists. xmlDocUniquePtr pXmlDoc = parseLayoutDump(); -if (!pXmlDoc) -return; assertXPath(pXmlDoc, "//SwAnchoredDrawObject/bounds", "height", "2551"); } -DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromTopMarginNoHeader, +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testRelativeAnchorHeightFromTopMarginNoHeader, "tdf123324_testRelativeAnchorHeightFromTopMarginNoHeader.docx") { // tdf#123324 The height was set relative from top margin, but this was handled relative from page height. @@ -1259,8 +1257,6 @@ DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromTopMarginNoHeader, // Note: page print area top = margin + header height. // In this case the header does not exist, so OpenDocument and OOXML margins are the same. xmlDocUniquePtr pXmlDoc = parseLayoutDump(); -if (!pXmlDoc) -return; assertXPath(pXmlDoc, "//SwAnchoredDrawObject/bounds", "height", "2551"); } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport4.cxx | 35 ++ 1 file changed, 12 insertions(+), 23 deletions(-) New commits: commit 4d57fd4557d818c6ec5aea12cdd797899b4fdcf7 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 13:28:43 2020 +0200 Commit: Mike Kaganski CommitDate: Thu Sep 3 10:23:41 2020 +0200 tdf#129423 sw: export-only tests, part 8 Convert some unit tests from "export" tests to "export only". Remove nullptr checks on parseExport's return value to make the tests fail if parsing fails for any reason. Change-Id: I15f7d0f6ecba4e4c11f3a24d6fa40f64f2690459 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101719 Tested-by: Jenkins Reviewed-by: Mike Kaganski diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx index 928e4557d8b0..f2ede8360d81 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx @@ -558,7 +558,7 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testOleObject, "test_ole_object.docx") } -DECLARE_OOXMLEXPORT_TEST(testFdo74792, "fdo74792.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFdo74792, "fdo74792.docx") { /* * fdo#74792 : The images associated with smart-art data[i].xml @@ -566,8 +566,6 @@ DECLARE_OOXMLEXPORT_TEST(testFdo74792, "fdo74792.docx") * Added support to grabbag the rels, with associated images. */ xmlDocUniquePtr pXmlDoc = parseExport("word/diagrams/_rels/data1.xml.rels"); -if(!pXmlDoc) -return; assertXPath(pXmlDoc,"/rels:Relationships/rels:Relationship", 4); uno::Reference xNameAccess = packages::zip::ZipFileAccess::createWithURL( comphelper::getComponentContext(m_xSFactory), maTempFile.GetURL()); @@ -577,19 +575,14 @@ DECLARE_OOXMLEXPORT_TEST(testFdo74792, "fdo74792.docx") CPPUNIT_ASSERT( xInputStream.is() ); } -DECLARE_OOXMLEXPORT_TEST(testFdo77718, "fdo77718.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testFdo77718, "fdo77718.docx") { //in case of multiple smart arts the names for images were getting //repeated and thereby causing a data loss as the binary stream was //getting over written. This test case ensures that unique names are //given for images in different smart arts. xmlDocUniquePtr pXmlDataRels1 = parseExport("word/diagrams/_rels/data1.xml.rels"); -if( !pXmlDataRels1 ) -return; - xmlDocUniquePtr pXmlDataRels2 = parseExport("word/diagrams/_rels/data2.xml.rels"); -if( !pXmlDataRels2 ) -return; //ensure that the rels file is present. assertXPath(pXmlDataRels1,"/rels:Relationships/rels:Relationship", 4); @@ -806,7 +799,7 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testCheckBoxControl, "checkbox-control.docx" // TODO: import control and add a check here } -DECLARE_OOXMLEXPORT_TEST(testParagraphWithComments, "paragraphWithComments.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testParagraphWithComments, "paragraphWithComments.docx") { /* Comment id's were getting overwritten for annotation mark(s), which was causing a mismatch in the relationship for comment id's @@ -814,8 +807,6 @@ DECLARE_OOXMLEXPORT_TEST(testParagraphWithComments, "paragraphWithComments.docx" */ xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); xmlDocUniquePtr pXmlComm = parseExport("word/comments.xml"); -if(!pXmlDoc) -return; sal_Int32 idInDocXml = getXPath(pXmlDoc,"/w:document/w:body/w:p[3]/w:commentRangeEnd[1]","id").toInt32(); sal_Int32 idInCommentXml = getXPath(pXmlComm,"/w:comments/w:comment[1]","id").toInt32(); @@ -963,14 +954,12 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(test76108, "test76108.docx") assertXPath(pXmlDoc, "/w:document[1]/w:body[1]/w:p[1]/w:r[1]/w:fldChar[1]", "fldCharType", "begin"); } -DECLARE_OOXMLEXPORT_TEST(testTCTagMisMatch, "TCTagMisMatch.docx") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTCTagMisMatch, "TCTagMisMatch.docx") { // TCTagMisMatch.docx : This document contains an empty table with borders. // there was a TC tag mismatch which resulted into a crash. xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); - if(!pXmlDoc) - return; assertXPath(pXmlDoc,"/w:document[1]/w:body[1]/w:tbl[1]/w:tr[1]/w:tc[1]/w:tbl[1]/w:tr[1]/w:tc[1]",0); assertXPath(pXmlDoc,"/w:document[1]/w:body[1]/w:tbl[1]/w:tr[1]/w:tc[1]", 1); } @@ -1042,12 +1031,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf103001, "tdf103001.docx") CPPUNIT_ASSERT(xNameAccess->hasByName("word/_rels/header1.xml.rels")); } -DECLARE_OOXMLEXPORT_TEST(testTdf92521, "tdf92521.odt") +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf92521, "tdf92521.odt") { CPPUNIT_ASSERT_EQUAL(2, getPages()); -if (xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml")) -// There should be a section break that's in the middle of the document: right after the table. -
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-6-4' - chart2/qa oox/source
chart2/qa/extras/chart2export.cxx | 14 ++ chart2/qa/extras/data/odp/tdf121189.odp |binary oox/source/export/shapes.cxx|1 + 3 files changed, 15 insertions(+) New commits: commit 9ca974ddb5ba89b09c1c2cfd7efced5895fbead5 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 24 17:29:08 2020 +0200 Commit: Gabor Kelemen CommitDate: Wed Oct 14 23:21:14 2020 +0200 tdf#121189 PPTX export: fix missing chart Based on Regina Henschel's technical analysis and code pointer. Change-Id: Ifdea48c09d23dce495fa6bc90a9e1648dbb5ccb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101283 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 0c5ac9d1cb39eac838a612092a8934a6ca12326f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104328 Tested-by: Gabor Kelemen Reviewed-by: Gabor Kelemen diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index 268e30d46d19..73f335574513 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -147,6 +147,7 @@ public: void testTdf119029(); void testTdf108022(); void testTdf121744(); +void testTdf121189(); void testTdf122031(); void testTdf115012(); void testTdf134118(); @@ -267,6 +268,7 @@ public: CPPUNIT_TEST(testTdf119029); CPPUNIT_TEST(testTdf108022); CPPUNIT_TEST(testTdf121744); +CPPUNIT_TEST(testTdf121189); CPPUNIT_TEST(testTdf122031); CPPUNIT_TEST(testTdf115012); CPPUNIT_TEST(testTdf134118); @@ -2391,6 +2393,18 @@ void Chart2ExportTest::testTdf121744() assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[2]", "val", YValueId ); } +void Chart2ExportTest::testTdf121189() +{ +load("/chart2/qa/extras/data/odp/", "tdf121189.odp"); +reload("Impress Office Open XML"); + +uno::Reference xDoc(mxComponent, uno::UNO_QUERY_THROW); +uno::Reference xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); +CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xPage->getCount()); +uno::Reference xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); +CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.OLE2Shape"), xShape->getShapeType()); +} + void Chart2ExportTest::testTdf122031() { //Checks pie chart data label format. diff --git a/chart2/qa/extras/data/odp/tdf121189.odp b/chart2/qa/extras/data/odp/tdf121189.odp new file mode 100644 index ..6f99e0054936 Binary files /dev/null and b/chart2/qa/extras/data/odp/tdf121189.odp differ diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 9f69e316cbec..4aa4522bd596 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -1550,6 +1550,7 @@ static const NameToConvertMapType& lcl_GetConverters() { "com.sun.star.presentation.GraphicObjectShape" , ::WriteGraphicObjectShape }, { "com.sun.star.presentation.MediaShape" , ::WriteGraphicObjectShape }, +{ "com.sun.star.presentation.ChartShape" , ::WriteOLE2Shape }, { "com.sun.star.presentation.OLE2Shape", ::WriteOLE2Shape }, { "com.sun.star.presentation.TableShape" , ::WriteTableShape }, { "com.sun.star.presentation.TextShape", ::WriteTextShape }, ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/source writerfilter/qa writerfilter/source
sw/source/core/unocore/unoframe.cxx| 17 + writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx | 21 +++ writerfilter/qa/cppunittests/dmapper/data/frame-direction.docx |binary writerfilter/source/dmapper/DomainMapper.cxx | 30 ++ writerfilter/source/dmapper/DomainMapper_Impl.cxx |6 +- writerfilter/source/dmapper/DomainMapper_Impl.hxx | 21 +++ 6 files changed, 94 insertions(+), 1 deletion(-) New commits: commit af4e5ee0f93c1ff442d08caed5c875f2b2c1fd43 Author: Daniel Arato (NISZ) AuthorDate: Wed Sep 16 08:48:32 2020 +0200 Commit: László Németh CommitDate: Tue Oct 6 12:31:04 2020 +0200 tdf#97128 DOCX import: fix frame direction Frames used to be imported with zero rotation even if a w:textDirection tag explicitly called for a non-default orientation. I found no other solution to pass the incoming frame direction property on to the SwXFrame about to be created. 1. If you put the property into the GetSectionContext(), it gets overwritten when the next w:pPr tag is parsed, so all three frames will end up having the same direction. 2. If you put the property into the GetTopContextOfType(CONTEXT_PARAGRAPH) that context gets popped off the stack before control even gets to CheckUnregisteredFrameConversion(). 3. If you use PushStyleSheetProperties (which is bad in and of itself), the order will be messed up because the frames are not necessarily created in the same order as they are described in the file, so each frame gets a wrong frame direction in the end. Follow-up of commit 5a5597655a4bf12e4ca07c9c2b6f6221e217f080 (tentative fix for fdo#30474# [DOCX rotated text import failure]). Change-Id: I6e3d68fe60c6e2a5b6684c65a964dd86d0168181 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103553 Tested-by: Jenkins Reviewed-by: László Németh diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index e8461393ea6f..a73b8e74fa95 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -1402,6 +1402,23 @@ void SwXFrame::setPropertyValue(const OUString& rPropertyName, const ::uno::Any& { SolarMutexGuard aGuard; SwFrameFormat* pFormat = GetFrameFormat(); + +// Hack to support hidden property to transfer textDirection +if(rPropertyName == "FRMDirection") +{ +if (pFormat) +{ +SvxFrameDirectionItem aItem(SvxFrameDirection::Environment, RES_FRAMEDIR); +aItem.PutValue(_rValue, 0); +GetFrameFormat()->SetFormatAttr(aItem); +} +else if(IsDescriptor()) +{ +m_pProps->SetProperty(static_cast(RES_FRAMEDIR), 0, _rValue); +} +return; +} + const ::SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap().getByName(rPropertyName); if (!pEntry) diff --git a/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx b/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx index 893db1607112..de63ec4084d9 100644 --- a/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx @@ -14,6 +14,8 @@ #include #include #include +#include +#include using namespace ::com::sun::star; @@ -104,6 +106,25 @@ CPPUNIT_TEST_FIXTURE(Test, testNumberingRestartStyleParent) xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); CPPUNIT_ASSERT_EQUAL(OUString("2."), xPara->getPropertyValue(aProp).get()); } + +CPPUNIT_TEST_FIXTURE(Test, testFrameDirection) +{ +OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "frame-direction.docx"; +getComponent() = loadFromDesktop(aURL); + +uno::Reference xDrawPageSupplier(getComponent(), uno::UNO_QUERY); +uno::Reference xDrawPage = xDrawPageSupplier->getDrawPage(); +uno::Reference xFrame0(xDrawPage->getByIndex(0), uno::UNO_QUERY); +uno::Reference xFrame1(xDrawPage->getByIndex(1), uno::UNO_QUERY); +uno::Reference xFrame2(xDrawPage->getByIndex(2), uno::UNO_QUERY); +// Without the accompanying fix in place, all of the following values would be text::WritingMode2::CONTEXT +CPPUNIT_ASSERT_EQUAL(text::WritingMode2::CONTEXT, + xFrame0->getPropertyValue("WritingMode").get()); +CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, + xFrame1->getPropertyValue("WritingMode").get()); +CPPUNIT_ASSERT_EQUAL(text::WritingMode2::TB_RL, + xFrame2->getPropertyValue("WritingMode").get()); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/data/frame-direction.docx b/writerfilter/qa/cppunittests/dmapper/data/frame-direction.docx new file mode 100644 index ..33f191e80350 Binary files
[Libreoffice-commits] core.git: oox/qa oox/source
oox/qa/unit/data/camera-rotation-revolution.docx |binary oox/qa/unit/drawingml.cxx| 25 + oox/source/drawingml/shape.cxx |7 +++-- oox/source/export/drawingml.cxx | 32 +-- 4 files changed, 60 insertions(+), 4 deletions(-) New commits: commit a9c5c0d814a266096483572b84c72875ef8efd77 Author: Daniel Arato (NISZ) AuthorDate: Tue Sep 29 16:37:41 2020 +0200 Commit: László Németh CommitDate: Fri Oct 9 10:12:35 2020 +0200 tdf#133037 OOXML shape import: camera rotation along Z Instead of implementing proper OOXML 3D rotation (which would be an entirely new feature if I understand correctly), I merely interpret attribute "rev" of the rotation element a:camera/a:rot as a directive to rotate the entire shape the usual 2D way. That is already implemented and works well. This isn't the same thing Word does, but it might be good enough for now. This is kind of a mock solution, but it will be very easy to revert if it turns out to cause problems. Note: the export worked well previously, too (moreover, reloading the first LO export fixed the import). Change-Id: I2a99c119880bbed1c5b6430c4638cfbd10b7ac06 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103627 Tested-by: László Németh Reviewed-by: László Németh diff --git a/oox/qa/unit/data/camera-rotation-revolution.docx b/oox/qa/unit/data/camera-rotation-revolution.docx new file mode 100644 index ..74054aa82b3f Binary files /dev/null and b/oox/qa/unit/data/camera-rotation-revolution.docx differ diff --git a/oox/qa/unit/drawingml.cxx b/oox/qa/unit/drawingml.cxx index 7fcee1756a6f..6a0415b257f2 100644 --- a/oox/qa/unit/drawingml.cxx +++ b/oox/qa/unit/drawingml.cxx @@ -265,6 +265,31 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testShapeTextAdjustLeft) CPPUNIT_ASSERT_EQUAL(drawing::TextHorizontalAdjust_BLOCK, eAdjust); } +CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testCameraRotationRevolution) +{ +OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "camera-rotation-revolution.docx"; +load(aURL); + +uno::Reference xDrawPagesSupplier(getComponent(), uno::UNO_QUERY); +uno::Reference xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); +uno::Reference xShape0(xDrawPage->getByIndex(0), uno::UNO_QUERY); +uno::Reference xShape1(xDrawPage->getByIndex(1), uno::UNO_QUERY); +uno::Reference xShapeProps0(xShape0, uno::UNO_QUERY); +uno::Reference xShapeProps1(xShape1, uno::UNO_QUERY); +sal_Int32 nRotateAngle0; +sal_Int32 nRotateAngle1; +xShapeProps0->getPropertyValue("RotateAngle") >>= nRotateAngle0; +xShapeProps1->getPropertyValue("RotateAngle") >>= nRotateAngle1; + +// Without the accompanying fix in place, this test would have failed with: +// - Expected: 8000 +// - Actual : 0 +// so the camera rotation would not have been factored into how the shape is displayed +CPPUNIT_ASSERT_EQUAL(static_cast(8000), nRotateAngle0); +CPPUNIT_ASSERT_EQUAL(static_cast(27000), nRotateAngle1); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index c9ade16f7a1d..95b608eadcc6 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1461,11 +1461,14 @@ Reference< XShape > const & Shape::createAndInsert( else if( getTextBody() ) getTextBody()->getTextProperties().pushVertSimulation(); +// tdf#133037: a bit hackish: force Shape to rotate in the opposite direction the camera would rotate +const sal_Int32 nCameraRotation = get3DProperties().maCameraRotation.mnRevolution.get(0); + PropertySet aPropertySet(mxShape); -if ( !bUseRotationTransform && mnRotation != 0 ) +if ( !bUseRotationTransform && (mnRotation != 0 || nCameraRotation != 0) ) { // use the same logic for rotation from VML exporter (SimpleShape::implConvertAndInsert at vmlshape.cxx) -aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle36000( mnRotation / -600 ) ) ) ); +aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle36000( (mnRotation - nCameraRotation) / -600 ) ) ) ); aPropertySet.setAnyProperty( PROP_HoriOrientPosition, makeAny( maPosition.X ) ); aPropertySet.setAnyProperty( PROP_VertOrientPosition, makeAny( maPosition.Y ) ); } diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 4a9ac9f69014..c19b030ad642 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1708,7 +1708,8 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa {
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/extras/layout/data/tdf69647_images.odt |binary sw/qa/extras/layout/data/tdf69647_text.docx |binary sw/qa/extras/layout/layout.cxx | 19 +++- sw/source/core/text/itrform2.cxx | 23 +++- sw/source/core/text/porlay.cxx | 31 +-- sw/source/core/text/porlay.hxx |7 ++ sw/source/core/text/possiz.hxx |6 +++-- 7 files changed, 62 insertions(+), 24 deletions(-) New commits: commit d336e6c26012255015d3fc0caf8e7fafe14bd8f2 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 24 11:05:17 2020 +0200 Commit: László Németh CommitDate: Fri Aug 28 13:13:58 2020 +0200 tdf#69647 sw layout: fix line spacing with inline pictures Line height is now based on (the biggest) font size in the line rather than on the size of the tallest object there, according to ODF and like MSO does. Note: handling of first paragraph line is still different. Co-authored-by: Attila Bánhegyi (NISZ) Change-Id: I6cebea7dbdedd21ea173a0a867434525e7b86337 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101272 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/extras/layout/data/tdf69647_images.odt b/sw/qa/extras/layout/data/tdf69647_images.odt new file mode 100644 index ..e4f7fbe8039a Binary files /dev/null and b/sw/qa/extras/layout/data/tdf69647_images.odt differ diff --git a/sw/qa/extras/layout/data/tdf69647_text.docx b/sw/qa/extras/layout/data/tdf69647_text.docx new file mode 100644 index ..587089ff29cf Binary files /dev/null and b/sw/qa/extras/layout/data/tdf69647_text.docx differ diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 438a60bc633a..5e8f2d89eed4 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -2076,6 +2076,22 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineSections) CheckRedlineSectionsHidden(); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TDF69647_images) +{ +createDoc("tdf69647_images.odt"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +CPPUNIT_ASSERT(pTextDoc); +CPPUNIT_ASSERT_EQUAL_MESSAGE("Number of pages does not match!", 2, getPages()); +} + +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TDF69647_text) +{ +createDoc("tdf69647_text.docx"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +CPPUNIT_ASSERT(pTextDoc); +CPPUNIT_ASSERT_EQUAL_MESSAGE("Number of pages does not match!", 2, getPages()); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineTables) { createDoc("redline_table.fodt"); @@ -3756,7 +3772,8 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf123651) xmlDocUniquePtr pXmlDoc = parseLayoutDump(); // Without the accompanying fix in place, this test would have failed with 'Expected: 7639; // Actual: 12926'. The shape was below the second "Lorem ipsum" text, not above it. -assertXPath(pXmlDoc, "//SwAnchoredDrawObject/bounds", "top", "7639"); +const sal_Int32 nTopValue = getXPath(pXmlDoc, "//SwAnchoredDrawObject/bounds", "top").toInt32(); +CPPUNIT_ASSERT_DOUBLES_EQUAL(7639, nTopValue, 10); } CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf116501) diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx index 577b4d8ecbbc..a78d4f730e7f 100644 --- a/sw/source/core/text/itrform2.cxx +++ b/sw/source/core/text/itrform2.cxx @@ -324,7 +324,7 @@ void SwTextFormatter::InsertPortion( SwTextFormatInfo , // Adjust maxima if( m_pCurr->Height() < pPor->Height() ) -m_pCurr->Height( pPor->Height() ); +m_pCurr->Height( pPor->Height(), pPor->IsTextPortion() ); if( m_pCurr->GetAscent() < pPor->GetAscent() ) m_pCurr->SetAscent( pPor->GetAscent() ); @@ -776,7 +776,7 @@ void SwTextFormatter::CalcAscent( SwTextFormatInfo , SwLinePortion *pPor ) // height (example: n758883.docx) SwLinePortion const*const pLast = rInf.GetLast(); assert(pLast); -pPor->Height( pLast->Height() ); +pPor->Height( pLast->Height(), false ); pPor->SetAscent( pLast->GetAscent() ); } else @@ -1523,7 +1523,7 @@ SwLinePortion *SwTextFormatter::NewPortion( SwTextFormatInfo ) if( !m_pCurr->Height() ) { OSL_ENSURE( m_pCurr->Height(), "SwTextFormatter::NewPortion: limbo dance" ); -m_pCurr->Height( pPor->Height() ); +m_pCurr->Height( pPor->Height(), false ); m_pCurr->SetAscent( pPor->GetAscent() ); } @@ -1613,7 +1613,7 @@ TextFrameIndex SwTextFormatter::FormatLine(TextFrameIndex const nStartPos) if( GetInfo().IsStop() ) { m_pCurr->SetLen(TextFrameIndex(0)); -m_pCurr->Height( GetFrameRstHeight() + 1 ); +m_pCurr->Height( GetFrameRstHeight() + 1, false ); m_pCurr->SetRealHeight(
[Libreoffice-commits] core.git: sw/qa
sw/qa/extras/ooxmlexport/ooxmlexport7.cxx |6 -- 1 file changed, 6 deletions(-) New commits: commit d9e1775941ff2314d4c1c3d2ace273796d809ca4 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 24 13:24:02 2020 +0200 Commit: László Németh CommitDate: Mon Aug 24 15:32:17 2020 +0200 tdf#129423 sw: remove last two bad nullptr checks Clean-up of commit 5ac88d12b377f64ff36551bfb3cf95a4a23a167d (tdf#129423 sw: Convert more tests to export-only). After a bulk refactor of OOXML export-only tests some unnecessary, in fact harmful, checks whether parseExport returned a valid pointer remained in the codebase (spotted by Mike Kaganski). These checks have been deleted. Change-Id: I0374596c2f1b01be8092461168177f8c13ee1ca4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101274 Reviewed-by: László Németh Tested-by: László Németh diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index 61d914ced235..08f4826277c9 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -86,8 +86,6 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testAnchorIdForWP14AndW14, "AnchorId.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[3]/mc:AlternateContent/mc:Choice/w:drawing/wp:inline", "anchorId", "78735EFD"); assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[3]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "anchorId", "78735EFD"); - - } DECLARE_OOXMLEXPORT_TEST(testDkVert, "dkvert.docx") @@ -105,8 +103,6 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTextWatermark, "textWatermark.docx") //and Word uses the object ID to identify if it is a watermark. //It has to have the 'PowerPlusWaterMarkObject' string in it xmlDocUniquePtr pXmlHeader1 = parseExport("word/header1.xml"); -if (!pXmlHeader1) -return; assertXPath(pXmlHeader1, "/w:hdr[1]/w:p[1]/w:r[1]/w:pict[1]/v:shape[1]","id","PowerPlusWaterMarkObject93701316"); @@ -122,8 +118,6 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testPictureWatermark, "pictureWatermark.docx //It has to have the 'WordPictureWaterMarkObject' string in it xmlDocUniquePtr pXmlHeader1 = parseExport("word/header1.xml"); -if (!pXmlHeader1) -return; // Check the watermark ID assertXPath(pXmlHeader1, "/w:hdr[1]/w:p[1]/w:r[1]/mc:AlternateContent[1]/mc:Fallback[1]/w:pict[1]/v:shape[1]","id","WordPictureWatermark11962361"); ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-6-4' - include/oox oox/source sw/qa sw/source writerfilter/source
include/oox/ole/oleobjecthelper.hxx |2 +- oox/source/ole/oleobjecthelper.cxx | 10 +++--- sw/qa/extras/ooxmlexport/data/tdf131537.odt |binary sw/qa/extras/ooxmlexport/ooxmlexport5.cxx|9 - sw/source/filter/ww8/docxattributeoutput.cxx | 16 +++- writerfilter/source/dmapper/OLEHandler.cxx |4 ++-- 6 files changed, 25 insertions(+), 16 deletions(-) New commits: commit 8d80c1ae18844e96a7ba0ac5fc1cc608dad1ef07 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 12:48:07 2020 +0200 Commit: Gabor Kelemen CommitDate: Fri Sep 18 09:33:30 2020 +0200 tdf#131537 DOCX export: fix OLE "Display as icon" for example to avoid converting OLE icons of an ODF document to an icon-size embedded spreadsheet. When creating a new OLE object in Writer the user has an option called "Display as icon" which causes the actual contents of the OLE to be hidden when rendered in the document. This setting, referred to internally as the DrawAspect of the object, was imported fine, but when exported to a .docx it always had the value "Content" (corresponding to "Display as icon" being unchecked). Now OLE objects with "Display as icon" checked are saved with DrawAspect="Icon". A grab bag entry was previously used to let the DrawAspect setting flow through Writer from OOXML import to export. Now this workaround is no longer needed and is removed by the present commit. Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101711 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 07dcb0dab759d4ab535d99c0e6d326959906b87e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102652 Reviewed-by: Dániel Arató Reviewed-by: Xisco Fauli Tested-by: Jenkins (cherry picked from commit 10184fcab1f314e0861ad152b320ed1ee31ccdd5) Change-Id: I46ea4fc95a26bcd1f85e19a506c0965f73d4257a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102937 Tested-by: Gabor Kelemen Reviewed-by: Gabor Kelemen diff --git a/include/oox/ole/oleobjecthelper.hxx b/include/oox/ole/oleobjecthelper.hxx index 604785f305b6..0d76019318d8 100644 --- a/include/oox/ole/oleobjecthelper.hxx +++ b/include/oox/ole/oleobjecthelper.hxx @@ -77,7 +77,7 @@ private: OOX_DLLPUBLIC void SaveInteropProperties( css::uno::Reference const& xModel, OUString const& rObjectName, OUString const* pOldObjectName, - OUString const& rProgId, OUString const& rDrawAspect); + OUString const& rProgId); } // namespace ole diff --git a/oox/source/ole/oleobjecthelper.cxx b/oox/source/ole/oleobjecthelper.cxx index cb909592f9b2..9d909faa2307 100644 --- a/oox/source/ole/oleobjecthelper.cxx +++ b/oox/source/ole/oleobjecthelper.cxx @@ -87,7 +87,7 @@ OleObjectHelper::~OleObjectHelper() // just "application/vnd.sun.star.oleobject" void SaveInteropProperties(uno::Reference const& xModel, OUString const& rObjectName, OUString const*const pOldObjectName, - OUString const& rProgId, OUString const& rDrawAspect) + OUString const& rProgId) { static const char sEmbeddingsPropName[] = "EmbeddedObjects"; @@ -100,11 +100,9 @@ void SaveInteropProperties(uno::Reference const& xModel, if (aGrabBag.find(sEmbeddingsPropName) != aGrabBag.end()) objectsList << aGrabBag[sEmbeddingsPropName]; -uno::Sequence< beans::PropertyValue > aGrabBagAttribute(2); +uno::Sequence< beans::PropertyValue > aGrabBagAttribute(1); aGrabBagAttribute[0].Name = "ProgID"; aGrabBagAttribute[0].Value <<= rProgId; -aGrabBagAttribute[1].Name = "DrawAspect"; -aGrabBagAttribute[1].Value <<= rDrawAspect; // If we got an "old name", erase that first. if (pOldObjectName) @@ -148,9 +146,7 @@ bool OleObjectHelper::importOleObject( PropertyMap& rPropMap, const OleObjectInf xOutStrm->writeBytes( rOleObject.maEmbeddedData ); xOutStrm->closeOutput(); -SaveInteropProperties(m_xModel, aObjectId, nullptr, -rOleObject.maProgId, -rOleObject.mbShowAsIcon ? OUString("Icon") : OUString("Content")); +SaveInteropProperties(m_xModel, aObjectId, nullptr, rOleObject.maProgId); OUString aUrl = mxResolver->resolveEmbeddedObjectURL( aObjectId ); OSL_ENSURE( aUrl.match( g_aEmbeddedObjScheme ), "OleObjectHelper::importOleObject - unexpected URL scheme" ); diff --git a/sw/qa/extras/ooxmlexport/data/tdf131537.odt b/sw/qa/extras/ooxmlexport/data/tdf131537.odt new file mode 100644 index ..21f396368917 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf131537.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx index c5441fae765a..ad97c9be23fd 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx @@ -887,7
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/oox oox/source sw/qa sw/source writerfilter/source
include/oox/ole/oleobjecthelper.hxx |2 +- oox/source/ole/oleobjecthelper.cxx | 10 +++--- sw/qa/extras/ooxmlexport/data/tdf131537.odt |binary sw/qa/extras/ooxmlexport/ooxmlexport5.cxx|7 +++ sw/source/filter/ww8/docxattributeoutput.cxx | 16 +++- writerfilter/source/dmapper/OLEHandler.cxx |4 ++-- 6 files changed, 24 insertions(+), 15 deletions(-) New commits: commit 10184fcab1f314e0861ad152b320ed1ee31ccdd5 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 31 12:48:07 2020 +0200 Commit: Xisco Fauli CommitDate: Wed Sep 16 13:55:19 2020 +0200 tdf#131537 DOCX export: fix OLE "Display as icon" for example to avoid converting OLE icons of an ODF document to an icon-size embedded spreadsheet. When creating a new OLE object in Writer the user has an option called "Display as icon" which causes the actual contents of the OLE to be hidden when rendered in the document. This setting, referred to internally as the DrawAspect of the object, was imported fine, but when exported to a .docx it always had the value "Content" (corresponding to "Display as icon" being unchecked). Now OLE objects with "Display as icon" checked are saved with DrawAspect="Icon". A grab bag entry was previously used to let the DrawAspect setting flow through Writer from OOXML import to export. Now this workaround is no longer needed and is removed by the present commit. Change-Id: I46ea4fc95a26bcd1f85e19a506c0965f73d4257a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101711 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 07dcb0dab759d4ab535d99c0e6d326959906b87e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102652 Reviewed-by: Dániel Arató Reviewed-by: Xisco Fauli Tested-by: Jenkins diff --git a/include/oox/ole/oleobjecthelper.hxx b/include/oox/ole/oleobjecthelper.hxx index 1a5b1b67a044..0ce29c6b3bd9 100644 --- a/include/oox/ole/oleobjecthelper.hxx +++ b/include/oox/ole/oleobjecthelper.hxx @@ -77,7 +77,7 @@ private: OOX_DLLPUBLIC void SaveInteropProperties( css::uno::Reference const& xModel, OUString const& rObjectName, OUString const* pOldObjectName, - OUString const& rProgId, OUString const& rDrawAspect); + OUString const& rProgId); } // namespace ole diff --git a/oox/source/ole/oleobjecthelper.cxx b/oox/source/ole/oleobjecthelper.cxx index a77a784af629..4ec40af8073e 100644 --- a/oox/source/ole/oleobjecthelper.cxx +++ b/oox/source/ole/oleobjecthelper.cxx @@ -87,7 +87,7 @@ OleObjectHelper::~OleObjectHelper() // just "application/vnd.sun.star.oleobject" void SaveInteropProperties(uno::Reference const& xModel, OUString const& rObjectName, OUString const*const pOldObjectName, - OUString const& rProgId, OUString const& rDrawAspect) + OUString const& rProgId) { static const char sEmbeddingsPropName[] = "EmbeddedObjects"; @@ -100,11 +100,9 @@ void SaveInteropProperties(uno::Reference const& xModel, if (aGrabBag.find(sEmbeddingsPropName) != aGrabBag.end()) objectsList << aGrabBag[sEmbeddingsPropName]; -uno::Sequence< beans::PropertyValue > aGrabBagAttribute(2); +uno::Sequence< beans::PropertyValue > aGrabBagAttribute(1); aGrabBagAttribute[0].Name = "ProgID"; aGrabBagAttribute[0].Value <<= rProgId; -aGrabBagAttribute[1].Name = "DrawAspect"; -aGrabBagAttribute[1].Value <<= rDrawAspect; // If we got an "old name", erase that first. if (pOldObjectName) @@ -148,9 +146,7 @@ bool OleObjectHelper::importOleObject( PropertyMap& rPropMap, const OleObjectInf xOutStrm->writeBytes( rOleObject.maEmbeddedData ); xOutStrm->closeOutput(); -SaveInteropProperties(m_xModel, aObjectId, nullptr, -rOleObject.maProgId, -rOleObject.mbShowAsIcon ? OUString("Icon") : OUString("Content")); +SaveInteropProperties(m_xModel, aObjectId, nullptr, rOleObject.maProgId); OUString aUrl = mxResolver->resolveEmbeddedObjectURL( aObjectId ); OSL_ENSURE( aUrl.match( g_aEmbeddedObjScheme ), "OleObjectHelper::importOleObject - unexpected URL scheme" ); diff --git a/sw/qa/extras/ooxmlexport/data/tdf131537.odt b/sw/qa/extras/ooxmlexport/data/tdf131537.odt new file mode 100644 index ..21f396368917 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf131537.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx index 08d4831d1b12..43b404553741 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx @@ -925,6 +925,13 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo80898, "fdo80898.docx") "Word.Document.8"); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testOleIconDrawAspect, "tdf131537.odt") +{ +
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/extras/ooxmlexport/ooxmlexport12.cxx |2 +- sw/qa/extras/ooxmlexport/ooxmlexport15.cxx |3 +-- sw/source/filter/ww8/docxattributeoutput.cxx | 11 +++ 3 files changed, 13 insertions(+), 3 deletions(-) New commits: commit 17984bf6a57b2c445c2fb9a748e90a74981fcdc8 Author: Daniel Arato (NISZ) AuthorDate: Wed Sep 9 13:37:03 2020 +0200 Commit: László Németh CommitDate: Wed Sep 16 15:16:53 2020 +0200 tdf#135663 DOCX export: fix OLE distance from text Implements the export of the "mso-wrap-distance-*" properties of VML icons of OLE objects to the "style" property of the "object" XML tag. These properties are variously referred to as "wrap distance", "margin" or "spacing" and they control the amount of blank space to be left on each side of the object before text can appear. Follow-up of commit 8ee88230c110ae90b439a52bc2906d6c5383967f (tdf#135660 DOCX import: fix OLE icon wrap distance). Change-Id: I576b876d2dca133b0ff593ff301519c17d2a348f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102323 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx index 667695b96f70..682343c782af 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx @@ -945,7 +945,7 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf122563, "tdf122563.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r/w:object", 1); // Size of the embedded OLE spreadsheet was the bad "width:28.35pt;height:28.35pt" assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:object/v:shape", "style", -"width:255.75pt;height:63.75pt"); +"width:255.75pt;height:63.75pt;mso-wrap-distance-right:0pt"); } DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf94628, "tdf94628.docx") diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx index 902d1c9df6a2..39a9b103308a 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx @@ -691,8 +691,7 @@ DECLARE_OOXMLEXPORT_TEST(testImageSpaceSettings, "tdf135047_ImageSpaceSettings.f assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:drawing/wp:anchor", "distR", "90170"); } -// TODO: change this to an export test once wrap distance export (TDF#135663) is implemented -DECLARE_OOXMLIMPORT_TEST(testTdf13660, "tdf135660.docx") +DECLARE_OOXMLEXPORT_TEST(testTdf135660, "tdf135660.docx") { CPPUNIT_ASSERT_EQUAL(1, getShapes()); const uno::Reference xShape = getShape(1); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 54cae24fe730..caaaf440ddc3 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -5825,6 +5825,17 @@ OString DocxAttributeOutput::GetOLEStyle(const SwFlyFrameFormat& rFormat, const "pt;height:" + OString::number( double( rSize.Height() ) / 20 ) + "pt"; //from VMLExport::AddRectangleDimensions(), it does: value/20 +const SvxLRSpaceItem& rLRSpace = rFormat.GetLRSpace(); +if (rLRSpace.IsExplicitZeroMarginValLeft() || rLRSpace.GetLeft()) +sShapeStyle += ";mso-wrap-distance-left:" + OString::number(double(rLRSpace.GetLeft()) / 20) + "pt"; +if (rLRSpace.IsExplicitZeroMarginValRight() || rLRSpace.GetRight()) +sShapeStyle += ";mso-wrap-distance-right:" + OString::number(double(rLRSpace.GetRight()) / 20) + "pt"; +const SvxULSpaceItem& rULSpace = rFormat.GetULSpace(); +if (rULSpace.GetUpper()) +sShapeStyle += ";mso-wrap-distance-top:" + OString::number(double(rULSpace.GetUpper()) / 20) + "pt"; +if (rULSpace.GetLower()) +sShapeStyle += ";mso-wrap-distance-bottom:" + OString::number(double(rULSpace.GetLower()) / 20) + "pt"; + //Export anchor setting, if it exists if (!aPos.isEmpty() && !aAnch.isEmpty()) sShapeStyle = aPos + sShapeStyle + aAnch; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/core/layout/data/shape-textbox.odt|binary sw/qa/core/layout/layout.cxx| 31 sw/qa/extras/ooxmlexport/ooxmlexport10.cxx |6 +++- sw/qa/extras/ooxmlimport/ooxmlimport.cxx|3 +- sw/source/core/layout/objectformattertxtfrm.cxx | 30 +++ 5 files changed, 67 insertions(+), 3 deletions(-) New commits: commit c9eb53f200225f2ee6ca695e1326843a487aee51 Author: Daniel Arato (NISZ) AuthorDate: Wed Oct 14 15:46:23 2020 +0200 Commit: László Németh CommitDate: Tue Oct 27 13:27:55 2020 +0100 tdf#135198 sw editing: text box fell out of its shape Without this patch if a shape anchored to a paragraph and containing a text box was moved upwards beyond the vertical position of its anchor, the text box failed to keep its position in sync with the shape. This is fixed by telling the text box the absolute vertical position of the corresponding shape after the latter is moved. Note: Other fix is associated to the shortcut keys Shift-Arrow Up/Shift-Arrow Down for moving text frames with bigger steps vertically. Now it's not possible to use these keys, but that was bad with text boxes, because it moved only the text content of the text box. Note: this patch fixes the vertical position of the text box of textbox-wps-only.docx of the unit test textboxWpsOnly. Change-Id: Ib66b13cae455462c616fed6bbd088433c83e61a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104520 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/core/layout/data/shape-textbox.odt b/sw/qa/core/layout/data/shape-textbox.odt new file mode 100644 index ..26a9eb7f7011 Binary files /dev/null and b/sw/qa/core/layout/data/shape-textbox.odt differ diff --git a/sw/qa/core/layout/layout.cxx b/sw/qa/core/layout/layout.cxx index 8decbdf8e98c..7c6ae7df3894 100644 --- a/sw/qa/core/layout/layout.cxx +++ b/sw/qa/core/layout/layout.cxx @@ -14,6 +14,11 @@ #include #include #include +#include +#include +//#include +#include +#include char const DATA_DIRECTORY[] = "/sw/qa/core/layout/data/"; @@ -163,6 +168,32 @@ CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testAnchorPositionBasedOnParagraph) assertXPath(pXmlDoc, "(//SwAnchoredDrawObject)[3]/bounds", "bottom", "3844"); } +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxStaysInsideShape) +{ +// tdf#135198: check whether text box stays inside shape after moving it upwards +load(DATA_DIRECTORY, "shape-textbox.odt"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +SwDocShell* pDocShell = pTextDoc->GetDocShell(); +SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); +SdrObject* pTextBoxObj = pWrtShell->GetObjAt({ 8000, 3000 }); + +xmlDocUniquePtr pLayoutBefore = parseLayoutDump(); +CPPUNIT_ASSERT(pLayoutBefore); +const int nTextBoxTopBefore = getXPath(pLayoutBefore, "//fly/infos/bounds", "top").toInt32(); + +uno::Reference xShape(pTextBoxObj->getUnoShape(), uno::UNO_QUERY_THROW); +auto aPosition = xShape->getPosition(); +aPosition.Y -= 500; +xShape->setPosition(aPosition); + +discardDumpedLayout(); +xmlDocUniquePtr pLayoutAfter = parseLayoutDump(); +CPPUNIT_ASSERT(pLayoutAfter); +const int nTextBoxTopAfter = getXPath(pLayoutAfter, "//fly/infos/bounds", "top").toInt32(); +CPPUNIT_ASSERT_MESSAGE("text box was supposed to stay inside its shape", + nTextBoxTopAfter < nTextBoxTopBefore); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx index 5b22f0ea274b..dbfd1fa78ead 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx @@ -661,9 +661,11 @@ DECLARE_OOXMLEXPORT_TEST(testChartSize, "chart-size.docx") // This was 10954. CPPUNIT_ASSERT_EQUAL(sal_Int32(6008), getProperty(xEmbeddedObjects->getByIndex(0), "Width")); +// The following assert no longer applies due to tdf#135198 + // Layout modified the document when it had this chart. -uno::Reference xModifiable(mxComponent, uno::UNO_QUERY); -CPPUNIT_ASSERT_EQUAL(false, bool(xModifiable->isModified())); +//uno::Reference xModifiable(mxComponent, uno::UNO_QUERY); +//CPPUNIT_ASSERT_EQUAL(false, bool(xModifiable->isModified())); } DECLARE_OOXMLEXPORT_TEST(testInlineGroupshape, "inline-groupshape.docx") diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index ee1b545821be..91029dae7a1d 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -1065,7 +1065,8 @@ DECLARE_OOXMLIMPORT_TEST(textboxWpsOnly, "textbox-wps-only.docx") if ( nsScreen.frame.size.width * scaleFactor > 4000 ) return;
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/core/layout/data/textbox-phantom-change.docx |binary sw/qa/core/layout/layout.cxx | 14 sw/source/core/draw/dcontact.cxx | 29 +- sw/source/core/layout/objectformattertxtfrm.cxx| 33 - 4 files changed, 42 insertions(+), 34 deletions(-) New commits: commit 59fec754a1523eede0f19a59e4eeeff593a4d688 Author: Daniel Arato (NISZ) AuthorDate: Mon Nov 16 11:53:47 2020 +0100 Commit: László Németh CommitDate: Thu Nov 26 14:41:53 2020 +0100 tdf#135198 tdf#138050 sw editing: fix text box position sync Follow-up to commit c9eb53f200225f2ee6ca695e1326843a487aee51 (tdf#135198 sw editing: text box fell out of its shape) Every time a shape is repositioned, make sure the text box inside the shape follows the shape. The previous solution to this bug, the one implemented in SwObjectFormatterTextFrame::DoFormatObjs, was a little more cumbersome. This one should produce fewer regressions, I hope. Change-Id: I3e88eb8616cd299cabb7b74b188ab7220746ec89 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106421 Tested-by: Jenkins Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/core/layout/data/textbox-phantom-change.docx b/sw/qa/core/layout/data/textbox-phantom-change.docx new file mode 100644 index ..75ac039561f6 Binary files /dev/null and b/sw/qa/core/layout/data/textbox-phantom-change.docx differ diff --git a/sw/qa/core/layout/layout.cxx b/sw/qa/core/layout/layout.cxx index 15f2c4edb846..2151b870da13 100644 --- a/sw/qa/core/layout/layout.cxx +++ b/sw/qa/core/layout/layout.cxx @@ -16,6 +16,7 @@ #include #include #include +#include #include char const DATA_DIRECTORY[] = "/sw/qa/core/layout/data/"; @@ -180,6 +181,19 @@ CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxStaysInsideShape) assertXPath(pXmlDoc, "//fly/infos/bounds", "bottom", "7184"); } +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxNotModifiedOnOpen) +{ +// tdf#138050: a freshly opened document containing a shape with a text box +// should not appear to be modified +load(DATA_DIRECTORY, "textbox-phantom-change.docx"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + +// Without the fix in place this test would have shown that the document +// was modified due to a fix to tdf#135198 +CPPUNIT_ASSERT(!pDoc->getIDocumentState().IsModified()); +} + CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxAutoGrowVertical) { load(DATA_DIRECTORY, "textbox-autogrow-vertical.docx"); diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index eb406e418ac9..3ae40ccde5a2 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -49,6 +49,8 @@ #include #include #include +#include +#include #include #include #include @@ -1260,7 +1262,6 @@ void SwDrawContact::Changed_( const SdrObject& rObj, const SwFormatVertOrient& rVert = GetFormat()->GetVertOrient(); if ( nYPosDiff != 0 ) { - if ( rVert.GetRelationOrient() == text::RelOrientation::CHAR || rVert.GetRelationOrient() == text::RelOrientation::TEXT_LINE ) { @@ -1313,6 +1314,32 @@ void SwDrawContact::Changed_( const SdrObject& rObj, // may affect the size of the underlying textbox. lcl_textBoxSizeNotify(GetFormat()); } + +// tdf#135198: keep text box together with its shape +SwRect aObjRect(rObj.GetSnapRect()); +const SwPageFrame* rPageFrame = pAnchoredDrawObj->GetPageFrame(); +if (rPageFrame && rPageFrame->isFrameAreaPositionValid()) +{ +SwDoc* const pDoc = GetFormat()->GetDoc(); + +// avoid Undo creation +::sw::UndoGuard const ug(pDoc->GetIDocumentUndoRedo()); + +// hide any artificial "changes" made by synchronizing the textbox position +const bool bEnableSetModified = pDoc->getIDocumentState().IsEnableSetModified(); +pDoc->getIDocumentState().SetEnableSetModified(false); + +SfxItemSet aSyncSet(pDoc->GetAttrPool(), +svl::Items{}); +aSyncSet.Put(SwFormatVertOrient(aObjRect.Top() - rPageFrame->getFrameArea().Top(), +text::VertOrientation::NONE, + text::RelOrientation::PAGE_FRAME)); +aSyncSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_PAGE, pAnchoredDrawObj->GetPageFrame()->GetPhyPageNum())); + +SwTextBoxHelper::syncFlyFrameAttr(*GetFormat(), aSyncSet); + +
[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - sw/qa sw/source
sw/qa/core/layout/data/textbox-phantom-change.docx |binary sw/qa/core/layout/layout.cxx | 14 sw/source/core/draw/dcontact.cxx | 29 +- sw/source/core/layout/objectformattertxtfrm.cxx| 33 - 4 files changed, 42 insertions(+), 34 deletions(-) New commits: commit cc04f0b6ff5a5e35cfc9dea1a98ea27b0efe6d5d Author: Daniel Arato (NISZ) AuthorDate: Mon Nov 16 11:53:47 2020 +0100 Commit: Xisco Fauli CommitDate: Thu Nov 26 16:39:46 2020 +0100 tdf#135198 tdf#138050 sw editing: fix text box position sync Follow-up to commit c9eb53f200225f2ee6ca695e1326843a487aee51 (tdf#135198 sw editing: text box fell out of its shape) Every time a shape is repositioned, make sure the text box inside the shape follows the shape. The previous solution to this bug, the one implemented in SwObjectFormatterTextFrame::DoFormatObjs, was a little more cumbersome. This one should produce fewer regressions, I hope. Change-Id: I3e88eb8616cd299cabb7b74b188ab7220746ec89 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106421 Tested-by: Jenkins Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 59fec754a1523eede0f19a59e4eeeff593a4d688) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106681 Reviewed-by: Xisco Fauli diff --git a/sw/qa/core/layout/data/textbox-phantom-change.docx b/sw/qa/core/layout/data/textbox-phantom-change.docx new file mode 100644 index ..75ac039561f6 Binary files /dev/null and b/sw/qa/core/layout/data/textbox-phantom-change.docx differ diff --git a/sw/qa/core/layout/layout.cxx b/sw/qa/core/layout/layout.cxx index 15f2c4edb846..2151b870da13 100644 --- a/sw/qa/core/layout/layout.cxx +++ b/sw/qa/core/layout/layout.cxx @@ -16,6 +16,7 @@ #include #include #include +#include #include char const DATA_DIRECTORY[] = "/sw/qa/core/layout/data/"; @@ -180,6 +181,19 @@ CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxStaysInsideShape) assertXPath(pXmlDoc, "//fly/infos/bounds", "bottom", "7184"); } +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxNotModifiedOnOpen) +{ +// tdf#138050: a freshly opened document containing a shape with a text box +// should not appear to be modified +load(DATA_DIRECTORY, "textbox-phantom-change.docx"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + +// Without the fix in place this test would have shown that the document +// was modified due to a fix to tdf#135198 +CPPUNIT_ASSERT(!pDoc->getIDocumentState().IsModified()); +} + CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxAutoGrowVertical) { load(DATA_DIRECTORY, "textbox-autogrow-vertical.docx"); diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index 8707bcbaeb84..bece3f460079 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -50,6 +50,8 @@ #include #include #include +#include +#include #include #include #include @@ -1262,7 +1264,6 @@ void SwDrawContact::Changed_( const SdrObject& rObj, const SwFormatVertOrient& rVert = GetFormat()->GetVertOrient(); if ( nYPosDiff != 0 ) { - if ( rVert.GetRelationOrient() == text::RelOrientation::CHAR || rVert.GetRelationOrient() == text::RelOrientation::TEXT_LINE ) { @@ -1315,6 +1316,32 @@ void SwDrawContact::Changed_( const SdrObject& rObj, // may affect the size of the underlying textbox. lcl_textBoxSizeNotify(GetFormat()); } + +// tdf#135198: keep text box together with its shape +SwRect aObjRect(rObj.GetSnapRect()); +const SwPageFrame* rPageFrame = pAnchoredDrawObj->GetPageFrame(); +if (rPageFrame && rPageFrame->isFrameAreaPositionValid()) +{ +SwDoc* const pDoc = GetFormat()->GetDoc(); + +// avoid Undo creation +::sw::UndoGuard const ug(pDoc->GetIDocumentUndoRedo()); + +// hide any artificial "changes" made by synchronizing the textbox position +const bool bEnableSetModified = pDoc->getIDocumentState().IsEnableSetModified(); +pDoc->getIDocumentState().SetEnableSetModified(false); + +SfxItemSet aSyncSet(pDoc->GetAttrPool(), +svl::Items{}); +aSyncSet.Put(SwFormatVertOrient(aObjRect.Top() - rPageFrame->getFrameArea().Top(), +text::VertOrientation::NONE, + text::RelOrientation::PAGE_FRAME)); +aSyncSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_PAGE,
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/core/layout/data/bottom-textbox-size.docx |binary sw/qa/core/layout/layout.cxx| 15 sw/qa/extras/ooxmlimport/ooxmlimport.cxx|3 -- sw/source/core/layout/objectformattertxtfrm.cxx | 29 ++-- 4 files changed, 33 insertions(+), 14 deletions(-) New commits: commit f2eef84ff03660cbb46a76c317e640e054ed0a56 Author: Daniel Arato (NISZ) AuthorDate: Tue Nov 3 11:22:40 2020 +0100 Commit: László Németh CommitDate: Mon Nov 9 19:05:20 2020 +0100 tdf#137881 sw: fix text box size regression from commit c9eb53f200225f2ee6ca695e1326843a487aee51 (tdf#135198 sw editing: text box fell out of its shape). The height of the bottom text box frame from the tdf#117921 sample file grew unreasonably large. This is countered by only activating the previous fix if it is strictly needed, i.e. when a shape and its text box drift apart from each other. The test file is derived from the one used for tdf#117921. Change-Id: Ied01c6089efe586b73de559f89f08b958f4b62d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105238 Tested-by: László Németh Tested-by: Jenkins Reviewed-by: László Németh diff --git a/sw/qa/core/layout/data/bottom-textbox-size.docx b/sw/qa/core/layout/data/bottom-textbox-size.docx new file mode 100644 index ..a1c700f28ae9 Binary files /dev/null and b/sw/qa/core/layout/data/bottom-textbox-size.docx differ diff --git a/sw/qa/core/layout/layout.cxx b/sw/qa/core/layout/layout.cxx index a992a32ae7d4..ff339322fe70 100644 --- a/sw/qa/core/layout/layout.cxx +++ b/sw/qa/core/layout/layout.cxx @@ -196,6 +196,21 @@ CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxStaysInsideShape) nTextBoxTopAfter < nTextBoxTopBefore); } +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxSizeAtBottomOfPage) +{ +// tdf#137881: check whether text box at the bottom of the page stays the right size +load(DATA_DIRECTORY, "bottom-textbox-size.docx"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); +SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); +SdrObject* pTextBoxObj = pPage->GetObj(0); + +uno::Reference xShape(pTextBoxObj->getUnoShape(), uno::UNO_QUERY_THROW); +const sal_Int32 nHeight = xShape->getSize().Height; +CPPUNIT_ASSERT_EQUAL_MESSAGE("text box was not supposed to be resized on fileopen", + static_cast(2200), nHeight); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index ec680a69a6ad..5919d1a6f76d 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -1065,8 +1065,7 @@ DECLARE_OOXMLIMPORT_TEST(textboxWpsOnly, "textbox-wps-only.docx") if ( nsScreen.frame.size.width * scaleFactor > 4000 ) return; #endif -// Vertically oriented to page due to tdf#135198 -CPPUNIT_ASSERT_EQUAL(sal_Int32(5304), getProperty(xFrame, "VertOrientPosition")); +CPPUNIT_ASSERT_EQUAL(sal_Int32(2805), getProperty(xFrame, "VertOrientPosition")); } DECLARE_OOXMLIMPORT_TEST(testGroupshapeRelsize, "groupshape-relsize.docx") diff --git a/sw/source/core/layout/objectformattertxtfrm.cxx b/sw/source/core/layout/objectformattertxtfrm.cxx index 2109835ba841..6b0e910fb113 100644 --- a/sw/source/core/layout/objectformattertxtfrm.cxx +++ b/sw/source/core/layout/objectformattertxtfrm.cxx @@ -355,23 +355,28 @@ bool SwObjectFormatterTextFrame::DoFormatObjs() SwFrameFormat& rFormat = pObj->GetFrameFormat(); if (SwTextBoxHelper::isTextBox(, RES_DRAWFRMFMT)) { -if (const SwPageFrame* pPageFrame = pObj->GetPageFrame()) +const SwFrameFormat* pOtherFormat = SwTextBoxHelper::getOtherTextBoxFormat(, RES_DRAWFRMFMT); +if (rFormat.GetVertOrient().GetPos() != pOtherFormat->GetVertOrient().GetPos() || +rFormat.GetAnchor().GetAnchorId() != pOtherFormat->GetAnchor().GetAnchorId()) { -SwDoc* pDoc = rFormat.GetDoc(); +if (const SwPageFrame* pPageFrame = pObj->GetPageFrame()) +{ +SwDoc* pDoc = rFormat.GetDoc(); -// avoid Undo creation, -::sw::UndoGuard const ug(pDoc->GetIDocumentUndoRedo()); +// avoid Undo creation, +::sw::UndoGuard const ug(pDoc->GetIDocumentUndoRedo()); -SfxItemSet aSet(pDoc->GetAttrPool(), -svl::Items{}); +SfxItemSet
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/extras/uiwriter/data3/tdf137964.odt |binary sw/qa/extras/uiwriter/uiwriter3.cxx | 34 sw/source/core/layout/objectformattertxtfrm.cxx | 25 + sw/source/uibase/docvw/edtwin.cxx |5 +++ 4 files changed, 58 insertions(+), 6 deletions(-) New commits: commit 768cfcee178b284be6d96d384364e59e40ecb375 Author: Daniel Arato (NISZ) AuthorDate: Tue Nov 3 14:09:46 2020 +0100 Commit: László Németh CommitDate: Thu Nov 12 16:20:27 2020 +0100 tdf#137960 tdf#137964 sw: fix Shift-ArrowKey text box movement A text box and its including shape are now going to keep their positions in sync along the horizontal (X) axis as well as the vertical (Y) axis. Moreover, Shift-UpArrow, Shift-DownArrow, Shift-LeftArrow and Shift-RightArrow are all going to work the same as the plain arrow keys, they are just going to move the text a larger distance. Change-Id: I49482a101d97927715f47efbf0f58808ea6a8547 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105328 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/extras/uiwriter/data3/tdf137964.odt b/sw/qa/extras/uiwriter/data3/tdf137964.odt new file mode 100644 index ..efbb27628ac7 Binary files /dev/null and b/sw/qa/extras/uiwriter/data3/tdf137964.odt differ diff --git a/sw/qa/extras/uiwriter/uiwriter3.cxx b/sw/qa/extras/uiwriter/uiwriter3.cxx index 477652a6369e..09cad813f162 100644 --- a/sw/qa/extras/uiwriter/uiwriter3.cxx +++ b/sw/qa/extras/uiwriter/uiwriter3.cxx @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include #include #include @@ -29,6 +31,9 @@ #include #include #include +#include +#include +#include namespace { @@ -1905,4 +1910,33 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf133477) CPPUNIT_ASSERT_EQUAL(Color(0, 102, 204), aBitmap.GetPixelColor(0, 0)); } +CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf137964) +{ +load(DATA_DIRECTORY, "tdf137964.odt"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +CPPUNIT_ASSERT(pTextDoc); + +CPPUNIT_ASSERT_EQUAL(1, getShapes()); +uno::Reference xShape(getShape(1), uno::UNO_QUERY); +CPPUNIT_ASSERT_EQUAL(sal_Int32(3579), xShape->getPosition().X); +CPPUNIT_ASSERT_EQUAL(sal_Int32(4090), xShape->getPosition().Y); + +SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); +SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); +SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); +SdrObject* pObject = pPage->GetObj(1); +SwContact* pTextBox = static_cast(pObject->GetUserCall()); +CPPUNIT_ASSERT_EQUAL(sal_uInt16(RES_FLYFRMFMT), pTextBox->GetFormat()->Which()); + +pWrtShell->SelectObj(Point(), 0, pObject); + +pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_SHIFT | KEY_UP); +pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_SHIFT | KEY_LEFT); +Scheduler::ProcessEventsToIdle(); + +// Without the fix in place, the shape would have stayed where it was +CPPUNIT_ASSERT_EQUAL(sal_Int32(2579), xShape->getPosition().X); +CPPUNIT_ASSERT_EQUAL(sal_Int32(3090), xShape->getPosition().Y); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/layout/objectformattertxtfrm.cxx b/sw/source/core/layout/objectformattertxtfrm.cxx index 6b0e910fb113..e3a9b4eb6711 100644 --- a/sw/source/core/layout/objectformattertxtfrm.cxx +++ b/sw/source/core/layout/objectformattertxtfrm.cxx @@ -370,12 +370,25 @@ bool SwObjectFormatterTextFrame::DoFormatObjs() svl::Items{}); const SwRect& rPageFrameArea = pPageFrame->getFrameArea(); - aSet.Put(SwFormatVertOrient(pObj->GetObjRect().Top() - rPageFrameArea.Top(), - text::VertOrientation::NONE, - text::RelOrientation::PAGE_FRAME)); -aSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_PAGE, pObj->GetPageFrame()->GetPhyPageNum())); - -SwTextBoxHelper::syncFlyFrameAttr(rFormat, aSet); +if (rFormat.GetVertOrient().GetPos() != pOtherFormat->GetVertOrient().GetPos()) +{ + aSet.Put(SwFormatVertOrient(pObj->GetObjRect().Top() - rPageFrameArea.Top(), + text::VertOrientation::NONE, + text::RelOrientation::PAGE_FRAME)); +} +if (rFormat.GetHoriOrient().GetPos() != pOtherFormat->GetHoriOrient().GetPos()) +{ +aSet.Put(rFormat.GetHoriOrient()); +
[Libreoffice-commits] core.git: sw/CppunitTest_sw_core_layout.mk sw/qa
sw/CppunitTest_sw_core_layout.mk |1 + sw/qa/core/layout/layout.cxx | 10 ++ sw/qa/extras/ooxmlexport/ooxmlexport10.cxx |6 -- 3 files changed, 7 insertions(+), 10 deletions(-) New commits: commit 3e2290c55c23c0785763f8de51eba749ab622900 Author: Daniel Arato (NISZ) AuthorDate: Thu Oct 29 13:41:06 2020 +0100 Commit: László Németh CommitDate: Thu Oct 29 19:02:59 2020 +0100 tdf#135198 fix unit test for HiDPI: pick object by index Clean-up commit c9eb53f200225f2ee6ca695e1326843a487aee51 (tdf#135198 sw editing: text box fell out of its shape). Also removed a few unnecessary lines that have been commented out. Change-Id: I6ec8535f98ed6e7743b34c9e31b0c76c0cddf301 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105006 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/CppunitTest_sw_core_layout.mk b/sw/CppunitTest_sw_core_layout.mk index 06f35d4bdc04..2cae001add53 100644 --- a/sw/CppunitTest_sw_core_layout.mk +++ b/sw/CppunitTest_sw_core_layout.mk @@ -32,6 +32,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_core_layout, \ svt \ tl \ svl \ +svxcore \ )) $(eval $(call gb_CppunitTest_use_externals,sw_core_layout,\ diff --git a/sw/qa/core/layout/layout.cxx b/sw/qa/core/layout/layout.cxx index 7c6ae7df3894..a992a32ae7d4 100644 --- a/sw/qa/core/layout/layout.cxx +++ b/sw/qa/core/layout/layout.cxx @@ -16,9 +16,11 @@ #include #include #include -//#include #include #include +#include +#include +#include char const DATA_DIRECTORY[] = "/sw/qa/core/layout/data/"; @@ -173,9 +175,9 @@ CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxStaysInsideShape) // tdf#135198: check whether text box stays inside shape after moving it upwards load(DATA_DIRECTORY, "shape-textbox.odt"); SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); -SwDocShell* pDocShell = pTextDoc->GetDocShell(); -SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); -SdrObject* pTextBoxObj = pWrtShell->GetObjAt({ 8000, 3000 }); +SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); +SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); +SdrObject* pTextBoxObj = pPage->GetObj(0); xmlDocUniquePtr pLayoutBefore = parseLayoutDump(); CPPUNIT_ASSERT(pLayoutBefore); diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx index dbfd1fa78ead..453b1718d5bf 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx @@ -660,12 +660,6 @@ DECLARE_OOXMLEXPORT_TEST(testChartSize, "chart-size.docx") uno::Reference xEmbeddedObjects(xTextEmbeddedObjectsSupplier->getEmbeddedObjects(), uno::UNO_QUERY); // This was 10954. CPPUNIT_ASSERT_EQUAL(sal_Int32(6008), getProperty(xEmbeddedObjects->getByIndex(0), "Width")); - -// The following assert no longer applies due to tdf#135198 - -// Layout modified the document when it had this chart. -//uno::Reference xModifiable(mxComponent, uno::UNO_QUERY); -//CPPUNIT_ASSERT_EQUAL(false, bool(xModifiable->isModified())); } DECLARE_OOXMLEXPORT_TEST(testInlineGroupshape, "inline-groupshape.docx") ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - oox/qa oox/source
oox/qa/unit/data/camera-rotation-revolution.docx |binary oox/qa/unit/drawingml.cxx| 25 + oox/source/drawingml/shape.cxx |7 +++-- oox/source/export/drawingml.cxx | 32 +-- 4 files changed, 60 insertions(+), 4 deletions(-) New commits: commit a571afa4a1747fe3ab3078ade6e93093526c6807 Author: Daniel Arato (NISZ) AuthorDate: Tue Sep 29 16:37:41 2020 +0200 Commit: Gülşah Köse CommitDate: Thu Nov 5 17:04:47 2020 +0100 tdf#133037 OOXML shape import: camera rotation along Z Instead of implementing proper OOXML 3D rotation (which would be an entirely new feature if I understand correctly), I merely interpret attribute "rev" of the rotation element a:camera/a:rot as a directive to rotate the entire shape the usual 2D way. That is already implemented and works well. This isn't the same thing Word does, but it might be good enough for now. This is kind of a mock solution, but it will be very easy to revert if it turns out to cause problems. Note: the export worked well previously, too (moreover, reloading the first LO export fixed the import). Change-Id: I2a99c119880bbed1c5b6430c4638cfbd10b7ac06 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103627 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit a9c5c0d814a266096483572b84c72875ef8efd77) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105352 Tested-by: Jenkins CollaboraOffice Reviewed-by: Gülşah Köse diff --git a/oox/qa/unit/data/camera-rotation-revolution.docx b/oox/qa/unit/data/camera-rotation-revolution.docx new file mode 100644 index ..74054aa82b3f Binary files /dev/null and b/oox/qa/unit/data/camera-rotation-revolution.docx differ diff --git a/oox/qa/unit/drawingml.cxx b/oox/qa/unit/drawingml.cxx index dea8461d543f..f17d1050fe85 100644 --- a/oox/qa/unit/drawingml.cxx +++ b/oox/qa/unit/drawingml.cxx @@ -274,6 +274,31 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testShapeTextAdjustLeft) CPPUNIT_ASSERT_EQUAL(drawing::TextHorizontalAdjust_BLOCK, eAdjust); } +CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testCameraRotationRevolution) +{ +OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "camera-rotation-revolution.docx"; +load(aURL); + +uno::Reference xDrawPagesSupplier(getComponent(), uno::UNO_QUERY); +uno::Reference xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); +uno::Reference xShape0(xDrawPage->getByIndex(0), uno::UNO_QUERY); +uno::Reference xShape1(xDrawPage->getByIndex(1), uno::UNO_QUERY); +uno::Reference xShapeProps0(xShape0, uno::UNO_QUERY); +uno::Reference xShapeProps1(xShape1, uno::UNO_QUERY); +sal_Int32 nRotateAngle0; +sal_Int32 nRotateAngle1; +xShapeProps0->getPropertyValue("RotateAngle") >>= nRotateAngle0; +xShapeProps1->getPropertyValue("RotateAngle") >>= nRotateAngle1; + +// Without the accompanying fix in place, this test would have failed with: +// - Expected: 8000 +// - Actual : 0 +// so the camera rotation would not have been factored into how the shape is displayed +CPPUNIT_ASSERT_EQUAL(static_cast(8000), nRotateAngle0); +CPPUNIT_ASSERT_EQUAL(static_cast(27000), nRotateAngle1); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 2ccc1e20917f..668c30a547b0 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1439,11 +1439,14 @@ Reference< XShape > const & Shape::createAndInsert( else if( getTextBody() ) getTextBody()->getTextProperties().pushVertSimulation(); +// tdf#133037: a bit hackish: force Shape to rotate in the opposite direction the camera would rotate +const sal_Int32 nCameraRotation = get3DProperties().maCameraRotation.mnRevolution.get(0); + PropertySet aPropertySet(mxShape); -if ( !bUseRotationTransform && mnRotation != 0 ) +if ( !bUseRotationTransform && (mnRotation != 0 || nCameraRotation != 0) ) { // use the same logic for rotation from VML exporter (SimpleShape::implConvertAndInsert at vmlshape.cxx) -aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle36000( mnRotation / -600 ) ) ) ); +aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle36000( (mnRotation - nCameraRotation) / -600 ) ) ) ); aPropertySet.setAnyProperty( PROP_HoriOrientPosition, makeAny( maPosition.X ) ); aPropertySet.setAnyProperty( PROP_VertOrientPosition, makeAny( maPosition.Y ) ); } diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index
[Libreoffice-commits] core.git: sw/source
sw/source/core/doc/docdesc.cxx |3 --- sw/source/uibase/shells/basesh.cxx |6 ++ 2 files changed, 6 insertions(+), 3 deletions(-) New commits: commit 0cd000bb83719982c1fd2265ea040c82af5bf98e Author: Daniel Arato (NISZ) AuthorDate: Mon Apr 26 15:04:17 2021 +0200 Commit: László Németh CommitDate: Mon May 10 15:41:28 2021 +0200 tdf#141613 sw: avoid possible crash when undoing header creation Move the ClearRedo() call to the very end of the undo process in order to avoid heap use after free. We still need to call ClearRedo() because there's no mechanism in place to Redo a header/footer change. Regression from commit 65e52cb61d74b0c71b45b63b2da131bc6b621104 "tdf#141613 sw: fix crash at header/footer undo". Change-Id: Ibd4604379c9791e85aef3d4dc6c29c9e3ecd5a28 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115275 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx index 4f38197f7ce9..fb7211dbae3b 100644 --- a/sw/source/core/doc/docdesc.cxx +++ b/sw/source/core/doc/docdesc.cxx @@ -503,9 +503,6 @@ void SwDoc::ChgPageDesc( size_t i, const SwPageDesc ) lDelHFFormat(, rDescLeftFooterFormat.GetFooterFormat()); else if (rDescFirstLeftFooterFormat.GetFooterFormat() && rDescFirstLeftFooterFormat != rChgedFirstLeftFooterFormat) lDelHFFormat(, rDescFirstLeftFooterFormat.GetFooterFormat()); - -// FIXME: Disable redoing this change until we figure out how -GetIDocumentUndoRedo().ClearRedo(); } } ::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo()); diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx index 78e37c09c756..d8b4c3210547 100644 --- a/sw/source/uibase/shells/basesh.cxx +++ b/sw/source/uibase/shells/basesh.cxx @@ -559,6 +559,12 @@ void SwBaseShell::ExecUndo(SfxRequest ) rWrtShell.Do( SwWrtShell::UNDO, nCnt ); for (SwViewShell& rShell : rWrtShell.GetRingContainer()) rShell.UnlockPaint(); + +// tdf#141613 FIXME: Disable redoing header/footer changes for now. +// The proper solution would be to write a SwUndoHeaderFooter class +// to represent the addition of a header or footer to the current page. +if (nUndoId == SwUndoId::HEADER_FOOTER) +rUndoRedo.ClearRedo(); } break; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/extras/layout/data/tdf104254.docx |binary sw/qa/extras/layout/layout2.cxx | 18 ++ sw/source/core/text/txtfly.cxx |8 +--- 3 files changed, 23 insertions(+), 3 deletions(-) New commits: commit 798b69087119c01a3b51e0bb3240ef35cfededeb Author: Daniel Arato (NISZ) AuthorDate: Wed Mar 24 20:18:16 2021 +0100 Commit: László Németh CommitDate: Fri May 21 08:00:33 2021 +0200 tdf#104254 sw DOCX import: fix text wrapping in headers Text wrapping around shapes and images used to be turned off in header and footer frames. This commit simply reenables that feature for headers/footers (to avoid also regressions related to the fix i13832). Change-Id: I46ca112f36e0c0c86342fa34fdb7cb7502745731 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113098 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/extras/layout/data/tdf104254.docx b/sw/qa/extras/layout/data/tdf104254.docx new file mode 100644 index ..a074db337024 Binary files /dev/null and b/sw/qa/extras/layout/data/tdf104254.docx differ diff --git a/sw/qa/extras/layout/layout2.cxx b/sw/qa/extras/layout/layout2.cxx index 8846ff6a914e..7e962c9b5976 100644 --- a/sw/qa/extras/layout/layout2.cxx +++ b/sw/qa/extras/layout/layout2.cxx @@ -2472,6 +2472,24 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf124770) assertXPath(pXmlDoc, "/root/page/body/txt[1]/LineBreak", 1); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTextWrappingInHeader) +{ +SwDoc* pDoc = createDoc("tdf104254.docx"); + +std::shared_ptr xMetaFile = pDoc->GetDocShell()->GetPreviewMetaFile(); +MetafileXmlDump dumper; +xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); +CPPUNIT_ASSERT(pXmlDoc); +assertXPath(pXmlDoc, "/metafile/push[1]/push[1]/push[1]/textarray", 2); + +// Make sure the header image does not block any of the header text. +// Without the accompanying fix in place, this test would have failed with: +// - Expected: > 3000 +// - Actual : 2009 +OUString sTextArrayX = getXPath(pXmlDoc, "/metafile/push[1]/push[1]/push[1]/textarray[1]", "x"); +CPPUNIT_ASSERT(sTextArrayX.toUInt32() > 3000); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testContinuousEndnotesInsertPageAtStart) { // Create a new document with CONTINUOUS_ENDNOTES enabled. diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx index a5fb1f6b6731..28ffea4116ab 100644 --- a/sw/source/core/text/txtfly.cxx +++ b/sw/source/core/text/txtfly.cxx @@ -843,7 +843,8 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList() const bool bAllowCompatWrap = m_pCurrFrame->IsInTab() && (bFooterHeader || m_pCurrFrame->IsInFootnote()); const bool bWrapAllowed = ( pIDSA->get(DocumentSettingId::USE_FORMER_TEXT_WRAPPING) || bAllowCompatWrap || -(!m_pCurrFrame->IsInFootnote() && !bFooterHeader)); +(!m_pCurrFrame->IsInFootnote() && !bFooterHeader) || +bFooterHeader ); m_bOn = false; @@ -885,12 +886,14 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList() // #i20505# Do not consider oversized objects SwAnchoredObject* pAnchoredObj = (*pSorted)[ i ]; assert(pAnchoredObj); +const SwFormatSurround = pAnchoredObj->GetFrameFormat().GetSurround(); if ( !pAnchoredObj || !rIDDMA.IsVisibleLayerId( pAnchoredObj->GetDrawObj()->GetLayer() ) || !pAnchoredObj->ConsiderForTextWrap() || ( mbIgnoreObjsInHeaderFooter && !bFooterHeader && pAnchoredObj->GetAnchorFrame()->FindFooterOrHeader() ) || - ( bAllowCompatWrap && !pAnchoredObj->GetFrameFormat().GetFollowTextFlow().GetValue() ) + ( bAllowCompatWrap && !pAnchoredObj->GetFrameFormat().GetFollowTextFlow().GetValue() ) || + ( !bAllowCompatWrap && bFooterHeader && com::sun::star::text::WrapTextMode_NONE == rFlyFormat.GetSurround() ) ) { continue; @@ -928,7 +931,6 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList() mpAnchoredObjList->insert( aInsPosIter, pAnchoredObj ); } -const SwFormatSurround = pAnchoredObj->GetFrameFormat().GetSurround(); // #i68520# if ( rFlyFormat.IsAnchorOnly() && pAnchoredObj->GetAnchorFrame() == GetMaster() ) ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sc/qa sc/source
sc/qa/unit/data/ods/tdf142764.ods|binary sc/qa/unit/subsequent_export-test2.cxx | 19 +++ sc/source/filter/xml/XMLTableHeaderFooterContext.cxx | 12 +--- 3 files changed, 28 insertions(+), 3 deletions(-) New commits: commit 52beb3907dd3c7e6ae112e263def1005272cecd8 Author: Daniel Arato (NISZ) AuthorDate: Thu Jun 24 15:01:54 2021 +0200 Commit: László Németh CommitDate: Wed Jul 7 15:27:43 2021 +0200 tdf#142764 sc: import "Same content on first/left page" Different header of the first page was never imported (related to the missing UI support), despite its working ODF export. This commit sets the values of those options at ODS file load according to the "display" attribute used to hide or show a particular header/footer. Follow-up to commit 19fa853ce12136b5c14e0c5a0aa906c296b75388 "tdf#121715 XLSX: support custom first page header/footer". Change-Id: I3409ad94a4d3ff86fd7f6d8afede3e7603024515 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117788 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sc/qa/unit/data/ods/tdf142764.ods b/sc/qa/unit/data/ods/tdf142764.ods new file mode 100644 index ..bbc4355dab32 Binary files /dev/null and b/sc/qa/unit/data/ods/tdf142764.ods differ diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx index ad08aa2802d0..0a44090734ab 100644 --- a/sc/qa/unit/subsequent_export-test2.cxx +++ b/sc/qa/unit/subsequent_export-test2.cxx @@ -142,6 +142,7 @@ public: void testPivotCacheAfterExportXLSX(); void testTdf114969XLSX(); void testTdf115192XLSX(); +void testTdf142764(); void testTdf91634XLSX(); void testTdf115159(); void testTdf112567(); @@ -240,6 +241,7 @@ public: CPPUNIT_TEST(testPivotCacheAfterExportXLSX); CPPUNIT_TEST(testTdf114969XLSX); CPPUNIT_TEST(testTdf115192XLSX); +CPPUNIT_TEST(testTdf142764); CPPUNIT_TEST(testTdf91634XLSX); CPPUNIT_TEST(testTdf115159); CPPUNIT_TEST(testTdf112567); @@ -1217,6 +1219,23 @@ void ScExportTest2::testTdf115192XLSX() xDocSh->DoClose(); } +void ScExportTest2::testTdf142764() +{ +ScDocShellRef xShell = loadDoc(u"tdf142764.", FORMAT_ODS); +CPPUNIT_ASSERT(xShell); + +auto pXPathFile = ScBootstrapFixture::exportTo(&(*xShell), FORMAT_XLSX); + +xmlDocUniquePtr pSheet += XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/worksheets/sheet1.xml"); +CPPUNIT_ASSERT(pSheet); + +assertXPath(pSheet, "/x:worksheet/x:headerFooter", "differentOddEven", "true"); +assertXPath(pSheet, "/x:worksheet/x:headerFooter", "differentFirst", "true"); + +xShell->DoClose(); +} + void ScExportTest2::testTdf91634XLSX() { ScDocShellRef xDocSh = loadDoc(u"image_hyperlink.", FORMAT_XLSX); diff --git a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx index a34015a999cf..c0b5c6eb6cc1 100644 --- a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx +++ b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx @@ -53,6 +53,7 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, OUString sContentLeft( bFooter ? OUString(SC_UNO_PAGE_LEFTFTRCONT) : OUString(SC_UNO_PAGE_LEFTHDRCONT) ); OUString sContentFirst( bFooter ? OUString(SC_UNO_PAGE_FIRSTFTRCONT) : OUString(SC_UNO_PAGE_FIRSTHDRCONT) ); OUString sShareContent( bFooter ? OUString(SC_UNO_PAGE_FTRSHARED) : OUString(SC_UNO_PAGE_HDRSHARED) ); +OUString sShareFirstContent( bFooter ? OUString(SC_UNO_PAGE_FIRSTFTRSHARED) : OUString(SC_UNO_PAGE_FIRSTHDRSHARED) ); bool bDisplay( true ); for( auto : sax_fastparser::castToFastAttributeList( xAttrList ) ) { @@ -61,10 +62,9 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, else XMLOFF_WARN_UNKNOWN("sc", aIter); } +bool bOn(::cppu::any2bool(xPropSet->getPropertyValue( sOn ))); if( bLeft ) { -bool bOn(::cppu::any2bool(xPropSet->getPropertyValue( sOn ))); - if( bOn && bDisplay ) { if( ::cppu::any2bool(xPropSet->getPropertyValue( sShareContent )) ) @@ -80,16 +80,22 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, } else { -bool bOn(::cppu::any2bool(xPropSet->getPropertyValue( sOn ))); if ( bOn != bDisplay ) xPropSet->setPropertyValue( sOn, uno::makeAny(bDisplay) ); } if (bLeft) +{ sCont = sContentLeft; +} else if (bFirst) +{ sCont = sContentFirst; +xPropSet->setPropertyValue( sShareFirstContent, uno::makeAny(!bDisplay) ); +} else +{ sCont = sContent; +} xPropSet->getPropertyValue( sCont ) >>= xHeaderFooterContent; }
[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - 2 commits - cui/source sc/qa sc/source
cui/source/tabpages/numpages.cxx |8 ++-- sc/qa/unit/data/ods/tdf142764.ods|binary sc/qa/unit/subsequent_export-test2.cxx | 19 +++ sc/source/filter/xml/XMLTableHeaderFooterContext.cxx | 12 +--- 4 files changed, 34 insertions(+), 5 deletions(-) New commits: commit 2de1b879b70535a6c1e7207b4be9271a54e2dfc9 Author: Daniel Arato (NISZ) AuthorDate: Thu Jun 24 15:01:54 2021 +0200 Commit: Xisco Fauli CommitDate: Wed Jul 7 21:58:25 2021 +0200 tdf#142764 sc: import "Same content on first/left page" Different header of the first page was never imported (related to the missing UI support), despite its working ODF export. This commit sets the values of those options at ODS file load according to the "display" attribute used to hide or show a particular header/footer. Follow-up to commit 19fa853ce12136b5c14e0c5a0aa906c296b75388 "tdf#121715 XLSX: support custom first page header/footer". Change-Id: I3409ad94a4d3ff86fd7f6d8afede3e7603024515 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117788 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 52beb3907dd3c7e6ae112e263def1005272cecd8) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118501 Tested-by: Jenkins Reviewed-by: Xisco Fauli diff --git a/sc/qa/unit/data/ods/tdf142764.ods b/sc/qa/unit/data/ods/tdf142764.ods new file mode 100644 index ..bbc4355dab32 Binary files /dev/null and b/sc/qa/unit/data/ods/tdf142764.ods differ diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx index 1c088c813f21..47a50a3d8ee6 100644 --- a/sc/qa/unit/subsequent_export-test2.cxx +++ b/sc/qa/unit/subsequent_export-test2.cxx @@ -142,6 +142,7 @@ public: void testPivotCacheAfterExportXLSX(); void testTdf114969XLSX(); void testTdf115192XLSX(); +void testTdf142764(); void testTdf91634XLSX(); void testTdf115159(); void testTdf112567(); @@ -237,6 +238,7 @@ public: CPPUNIT_TEST(testPivotCacheAfterExportXLSX); CPPUNIT_TEST(testTdf114969XLSX); CPPUNIT_TEST(testTdf115192XLSX); +CPPUNIT_TEST(testTdf142764); CPPUNIT_TEST(testTdf91634XLSX); CPPUNIT_TEST(testTdf115159); CPPUNIT_TEST(testTdf112567); @@ -1211,6 +1213,23 @@ void ScExportTest2::testTdf115192XLSX() xDocSh->DoClose(); } +void ScExportTest2::testTdf142764() +{ +ScDocShellRef xShell = loadDoc(u"tdf142764.", FORMAT_ODS); +CPPUNIT_ASSERT(xShell); + +auto pXPathFile = ScBootstrapFixture::exportTo(&(*xShell), FORMAT_XLSX); + +xmlDocUniquePtr pSheet += XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/worksheets/sheet1.xml"); +CPPUNIT_ASSERT(pSheet); + +assertXPath(pSheet, "/x:worksheet/x:headerFooter", "differentOddEven", "true"); +assertXPath(pSheet, "/x:worksheet/x:headerFooter", "differentFirst", "true"); + +xShell->DoClose(); +} + void ScExportTest2::testTdf91634XLSX() { ScDocShellRef xDocSh = loadDoc(u"image_hyperlink.", FORMAT_XLSX); diff --git a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx index a34015a999cf..c0b5c6eb6cc1 100644 --- a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx +++ b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx @@ -53,6 +53,7 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, OUString sContentLeft( bFooter ? OUString(SC_UNO_PAGE_LEFTFTRCONT) : OUString(SC_UNO_PAGE_LEFTHDRCONT) ); OUString sContentFirst( bFooter ? OUString(SC_UNO_PAGE_FIRSTFTRCONT) : OUString(SC_UNO_PAGE_FIRSTHDRCONT) ); OUString sShareContent( bFooter ? OUString(SC_UNO_PAGE_FTRSHARED) : OUString(SC_UNO_PAGE_HDRSHARED) ); +OUString sShareFirstContent( bFooter ? OUString(SC_UNO_PAGE_FIRSTFTRSHARED) : OUString(SC_UNO_PAGE_FIRSTHDRSHARED) ); bool bDisplay( true ); for( auto : sax_fastparser::castToFastAttributeList( xAttrList ) ) { @@ -61,10 +62,9 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, else XMLOFF_WARN_UNKNOWN("sc", aIter); } +bool bOn(::cppu::any2bool(xPropSet->getPropertyValue( sOn ))); if( bLeft ) { -bool bOn(::cppu::any2bool(xPropSet->getPropertyValue( sOn ))); - if( bOn && bDisplay ) { if( ::cppu::any2bool(xPropSet->getPropertyValue( sShareContent )) ) @@ -80,16 +80,22 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, } else { -bool bOn(::cppu::any2bool(xPropSet->getPropertyValue( sOn ))); if ( bOn != bDisplay ) xPropSet->setPropertyValue( sOn, uno::makeAny(bDisplay) ); } if (bLeft) +{ sCont = sContentLeft; +} else if (bFirst) +{ sCont = sContentFirst; +
[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - oox/source reportdesign/source sc/inc sc/qa sc/source
oox/source/token/properties.txt |4 + reportdesign/source/core/api/ReportDefinition.cxx|4 + sc/inc/scitems.hxx | 55 ++- sc/inc/unonames.hxx |4 + sc/qa/unit/data/xlsx/tdf121715.xlsx |binary sc/qa/unit/subsequent_export-test2.cxx | 21 +++ sc/source/core/data/docpool.cxx |9 ++- sc/source/filter/excel/xepage.cxx| 47 +--- sc/source/filter/excel/xipage.cxx|2 sc/source/filter/excel/xlpage.cxx|2 sc/source/filter/inc/pagesettings.hxx|6 +- sc/source/filter/inc/xlpage.hxx |9 ++- sc/source/filter/oox/pagesettings.cxx| 30 ++ sc/source/filter/xml/XMLTableHeaderFooterContext.cxx |5 + sc/source/filter/xml/XMLTableHeaderFooterContext.hxx |2 sc/source/filter/xml/XMLTableMasterPageExport.cxx| 24 sc/source/filter/xml/xmlfonte.cxx|3 - sc/source/filter/xml/xmlstyli.cxx|4 - sc/source/ui/inc/printfun.hxx|2 sc/source/ui/pagedlg/tphf.cxx|4 + sc/source/ui/unoobj/styleuno.cxx |6 ++ sc/source/ui/view/printfun.cxx | 12 +++- 22 files changed, 200 insertions(+), 55 deletions(-) New commits: commit b9993369b4011cd8f367e439f5248096827f1efc Author: Daniel Arato (NISZ) AuthorDate: Tue Jun 8 11:53:42 2021 +0200 Commit: László Németh CommitDate: Tue Jun 29 22:50:43 2021 +0200 tdf#121715 XLSX: support custom first page header/footer Add XLSX import/export support for a different header or footer (activated separately) on the first page. Print preview is also extended to support this. Note: only ODS export is supported, yet. Follow-up commits are going to add ODS import and UI support. Change-Id: Icd3a40131bdbcd5d5a42f98c86a71345a5745051 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116842 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 19fa853ce12136b5c14e0c5a0aa906c296b75388) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118067 Tested-by: Jenkins diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index 980c1bb8c0f2..68b5e2d14af5 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -184,6 +184,10 @@ Filter FilterCriteriaSource FilterOptions FirstLineOffset +FirstPageFooterContent +FirstPageHeaderContent +FirstPageFooterIsShared +FirstPageHeaderIsShared FirstPageNumber FocusOnClick FontCharset diff --git a/reportdesign/source/core/api/ReportDefinition.cxx b/reportdesign/source/core/api/ReportDefinition.cxx index fd6bf1bb56c1..839ec947ca36 100644 --- a/reportdesign/source/core/api/ReportDefinition.cxx +++ b/reportdesign/source/core/api/ReportDefinition.cxx @@ -149,6 +149,7 @@ #define SC_UNO_PAGE_HDRON "HeaderIsOn" #define SC_UNO_PAGE_HDRDYNAMIC "HeaderIsDynamicHeight" #define SC_UNO_PAGE_HDRSHARED "HeaderIsShared" +#define SC_UNO_PAGE_FIRSTHDRSHARED "FirstPageHeaderIsShared" #define SC_UNO_PAGE_FTRBACKCOL "FooterBackColor" #define SC_UNO_PAGE_FTRBACKTRAN "FooterBackTransparent" #define SC_UNO_PAGE_FTRGRFFILT "FooterBackGraphicFilter" @@ -171,6 +172,7 @@ #define SC_UNO_PAGE_FTRON "FooterIsOn" #define SC_UNO_PAGE_FTRDYNAMIC "FooterIsDynamicHeight" #define SC_UNO_PAGE_FTRSHARED "FooterIsShared" +#define SC_UNO_PAGE_FIRSTFTRSHARED "FirstPageFooterIsShared" namespace reportdesign { @@ -309,6 +311,7 @@ OStyle::OStyle() registerPropertyNoMember(SC_UNO_PAGE_FTRDYNAMIC, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_FTRON, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_FTRSHARED, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); +registerPropertyNoMember(SC_UNO_PAGE_FIRSTFTRSHARED, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_FTRLEFTBOR, ++i,nBound, cppu::UnoType::get(), css::uno::Any(table::BorderLine2())); registerPropertyNoMember(SC_UNO_PAGE_FTRLEFTBDIS, ++i,nBound, cppu::UnoType::get(), css::uno::makeAny(0)); registerPropertyNoMember(SC_UNO_PAGE_FTRLEFTMAR, ++i,nBound, cppu::UnoType::get(), css::uno::makeAny(0)); @@ -332,6 +335,7 @@ OStyle::OStyle() registerPropertyNoMember(SC_UNO_PAGE_HDRDYNAMIC, ++i,nBound|nMayBeVoid,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_HDRON, ++i,nBound|nMayBeVoid,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_HDRSHARED,
[Libreoffice-commits] core.git: oox/source reportdesign/source sc/inc sc/qa sc/source
oox/source/token/properties.txt |4 + reportdesign/source/core/api/ReportDefinition.cxx|4 + sc/inc/scitems.hxx | 55 ++- sc/inc/unonames.hxx |4 + sc/qa/unit/data/xlsx/tdf121715.xlsx |binary sc/qa/unit/subsequent_export-test2.cxx | 21 +++ sc/source/core/data/docpool.cxx |9 ++- sc/source/filter/excel/xepage.cxx| 47 +--- sc/source/filter/excel/xipage.cxx|2 sc/source/filter/excel/xlpage.cxx|2 sc/source/filter/inc/pagesettings.hxx|6 +- sc/source/filter/inc/xlpage.hxx |9 ++- sc/source/filter/oox/pagesettings.cxx| 30 ++ sc/source/filter/xml/XMLTableHeaderFooterContext.cxx |5 + sc/source/filter/xml/XMLTableHeaderFooterContext.hxx |2 sc/source/filter/xml/XMLTableMasterPageExport.cxx| 24 sc/source/filter/xml/xmlfonte.cxx|3 - sc/source/filter/xml/xmlstyli.cxx|4 - sc/source/ui/inc/printfun.hxx|2 sc/source/ui/pagedlg/tphf.cxx|4 + sc/source/ui/unoobj/styleuno.cxx |6 ++ sc/source/ui/view/printfun.cxx | 12 +++- 22 files changed, 200 insertions(+), 55 deletions(-) New commits: commit 19fa853ce12136b5c14e0c5a0aa906c296b75388 Author: Daniel Arato (NISZ) AuthorDate: Tue Jun 8 11:53:42 2021 +0200 Commit: László Németh CommitDate: Tue Jun 29 11:21:01 2021 +0200 tdf#121715 XLSX: support custom first page header/footer Add XLSX import/export support for a different header or footer (activated separately) on the first page. Print preview is also extended to support this. Note: only ODS export is supported, yet. Follow-up commits are going to add ODS import and UI support. Change-Id: Icd3a40131bdbcd5d5a42f98c86a71345a5745051 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116842 Tested-by: László Németh Reviewed-by: László Németh diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index 980c1bb8c0f2..68b5e2d14af5 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -184,6 +184,10 @@ Filter FilterCriteriaSource FilterOptions FirstLineOffset +FirstPageFooterContent +FirstPageHeaderContent +FirstPageFooterIsShared +FirstPageHeaderIsShared FirstPageNumber FocusOnClick FontCharset diff --git a/reportdesign/source/core/api/ReportDefinition.cxx b/reportdesign/source/core/api/ReportDefinition.cxx index fd6bf1bb56c1..839ec947ca36 100644 --- a/reportdesign/source/core/api/ReportDefinition.cxx +++ b/reportdesign/source/core/api/ReportDefinition.cxx @@ -149,6 +149,7 @@ #define SC_UNO_PAGE_HDRON "HeaderIsOn" #define SC_UNO_PAGE_HDRDYNAMIC "HeaderIsDynamicHeight" #define SC_UNO_PAGE_HDRSHARED "HeaderIsShared" +#define SC_UNO_PAGE_FIRSTHDRSHARED "FirstPageHeaderIsShared" #define SC_UNO_PAGE_FTRBACKCOL "FooterBackColor" #define SC_UNO_PAGE_FTRBACKTRAN "FooterBackTransparent" #define SC_UNO_PAGE_FTRGRFFILT "FooterBackGraphicFilter" @@ -171,6 +172,7 @@ #define SC_UNO_PAGE_FTRON "FooterIsOn" #define SC_UNO_PAGE_FTRDYNAMIC "FooterIsDynamicHeight" #define SC_UNO_PAGE_FTRSHARED "FooterIsShared" +#define SC_UNO_PAGE_FIRSTFTRSHARED "FirstPageFooterIsShared" namespace reportdesign { @@ -309,6 +311,7 @@ OStyle::OStyle() registerPropertyNoMember(SC_UNO_PAGE_FTRDYNAMIC, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_FTRON, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_FTRSHARED, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); +registerPropertyNoMember(SC_UNO_PAGE_FIRSTFTRSHARED, ++i,nBound,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_FTRLEFTBOR, ++i,nBound, cppu::UnoType::get(), css::uno::Any(table::BorderLine2())); registerPropertyNoMember(SC_UNO_PAGE_FTRLEFTBDIS, ++i,nBound, cppu::UnoType::get(), css::uno::makeAny(0)); registerPropertyNoMember(SC_UNO_PAGE_FTRLEFTMAR, ++i,nBound, cppu::UnoType::get(), css::uno::makeAny(0)); @@ -332,6 +335,7 @@ OStyle::OStyle() registerPropertyNoMember(SC_UNO_PAGE_HDRDYNAMIC, ++i,nBound|nMayBeVoid,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_HDRON, ++i,nBound|nMayBeVoid,cppu::UnoType::get(), css::uno::Any(false)); registerPropertyNoMember(SC_UNO_PAGE_HDRSHARED, ++i,nBound|nMayBeVoid,cppu::UnoType::get(), css::uno::Any(false)); +registerPropertyNoMember(SC_UNO_PAGE_FIRSTHDRSHARED, ++i,nBound|nMayBeVoid,cppu::UnoType::get(),
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/extras/ooxmlexport/data/tdf69635.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport14.cxx|2 sw/qa/extras/ooxmlexport/ooxmlexport16.cxx| 16 sw/qa/extras/ooxmlexport/ooxmlexport4.cxx | 22 +++--- sw/qa/extras/ooxmlexport/ooxmlexport5.cxx |6 - sw/qa/extras/ooxmlexport/ooxmlexport6.cxx |2 sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 12 +-- sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx |2 sw/source/filter/ww8/docxexport.cxx |9 +- sw/source/filter/ww8/docxexport.hxx |3 sw/source/filter/ww8/rtfexport.cxx| 10 +- sw/source/filter/ww8/rtfexport.hxx|6 + sw/source/filter/ww8/wrtw8sty.cxx | 95 +++--- sw/source/filter/ww8/wrtww8.hxx |8 +- 14 files changed, 145 insertions(+), 48 deletions(-) New commits: commit 88e6a1bfeac86e0c89d2ff08c908c2b5ae061177 Author: Daniel Arato (NISZ) AuthorDate: Fri Feb 5 12:07:48 2021 +0100 Commit: László Németh CommitDate: Tue May 4 19:14:22 2021 +0200 tdf#69635 DOCX: export hidden (shared) headers/footers Exporting to .docx used to lose all header and footer content that was not visible in the document at the moment of saving. This commit forces the DocxExport class to output all headers and footers even when the "Same content on left and right pages" option is turned on. Change-Id: I6a52f216f1e1b386d887ec614198766670b5bce3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113158 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/extras/ooxmlexport/data/tdf69635.docx b/sw/qa/extras/ooxmlexport/data/tdf69635.docx new file mode 100644 index ..94cced4d2ae4 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf69635.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx index 06c5a16e578a..24f51850e4ff 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx @@ -671,7 +671,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf130167_spilloverHeaderShape, "testTdf130167_spil xTextGraphicObjectsSupplier->getGraphicObjects(), uno::UNO_QUERY); // graphics from discarded headers were being added to the text body. Reduced from 5 to 2 shapes overall. // CPPUNIT_ASSERT(xNameAccess->getCount() <= 4); -> What about hidden headers? -CPPUNIT_ASSERT_LESS(sal_Int32(6), xNameAccess->getCount()); +CPPUNIT_ASSERT_LESS(sal_Int32(9), xNameAccess->getCount()); } DECLARE_OOXMLEXPORT_TEST(testTdf124986, "tdf124986.docx") diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx index d31a4ea06a8f..991bfb6817f1 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx @@ -119,6 +119,22 @@ CPPUNIT_TEST_FIXTURE(Test, testGutterTop) assertXPath(pXmlSettings, "/w:settings/w:gutterAtTop", 1); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf69635, "tdf69635.docx") +{ +xmlDocUniquePtr pXmlHeader1 = parseExport("word/header1.xml"); +xmlDocUniquePtr pXmlSettings = parseExport("word/settings.xml"); +CPPUNIT_ASSERT(pXmlHeader1); +CPPUNIT_ASSERT(pXmlSettings); + +// Without the accompanying fix in place, this test would have failed with: +// - Expected: "left" +// - Actual : "right" +assertXPathContent(pXmlHeader1, "/w:hdr/w:p/w:r/w:t", "left"); + +// Make sure "left" appears as a hidden header +assertXPath(pXmlSettings, "/w:settings/w:evenAndOddHeaders", 0); +} + DECLARE_OOXMLEXPORT_TEST(testTdf140668, "tdf140668.docx") { // Don't crash when document is opened diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx index 603b1010b59a..ac0930169253 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx @@ -398,10 +398,10 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testChartInFooter, "chart-in-footer.docx") // fdo#73872: document contains chart in footer. // The problem was that footer1.xml.rels files for footer1.xml // files were missing from docx file after roundtrip. -xmlDocUniquePtr pXmlDoc = parseExport("word/_rels/footer1.xml.rels"); +xmlDocUniquePtr pXmlDoc = parseExport("word/_rels/footer2.xml.rels"); -// Check footer1.xml.rels contains in doc after roundtrip. -// Check Id = rId1 in footer1.xml.rels +// Check footer2.xml.rels contains in doc after roundtrip. +// Check Id = rId1 in footer2.xml.rels assertXPath(pXmlDoc,"/rels:Relationships/rels:Relationship","Id","rId1"); assertXPath(pXmlDoc, "/rels:Relationships/rels:Relationship[@Id='rId1']", @@ -415,12 +415,12 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testChartInFooter, "chart-in-footer.docx")
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/uitest/writer_tests7/tdf46561.py | 13 + sw/source/core/doc/docdesc.cxx | 84 + 2 files changed, 97 insertions(+) New commits: commit 65e52cb61d74b0c71b45b63b2da131bc6b621104 Author: Daniel Arato (NISZ) AuthorDate: Mon Apr 26 15:04:17 2021 +0200 Commit: László Németh CommitDate: Tue May 4 15:38:21 2021 +0200 tdf#141613 sw: fix crash at header/footer undo Undoing the creation of a header/footer used to leave their corresponding document nodes intact, causing the node index of a previous undo entry to point to the wrong node. We now force the destruction of the header/footer nodes manually. We also cut the redo chain which loses the redo history, but solves another crash for now (when redoing the creation of the header). The proper solution would be to create a new SwUndo* derived class from scratch to represent the creation of a new header/footer section in the document. Regression from commit 8d8486f43c1a8a51157bfc3e0b87090b05a9229e (tdf#46561 sw: fix lost undo stack setting header/footer) Change-Id: I97188aa8ded802bc6b6fa88ddd83a95c40de8bc3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114667 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sw/qa/uitest/writer_tests7/tdf46561.py b/sw/qa/uitest/writer_tests7/tdf46561.py index 1c90dc3c404a..7d43ed8505eb 100644 --- a/sw/qa/uitest/writer_tests7/tdf46561.py +++ b/sw/qa/uitest/writer_tests7/tdf46561.py @@ -97,4 +97,17 @@ class tdf46561(UITestCase): self.ui_test.close_doc() +# Check that former crash has been fixed +def test_tdf141613(self): +self.ui_test.create_doc_in_start_center("writer") + +xWriterDoc = self.xUITest.getTopFocusWindow() +xWriterEdit = xWriterDoc.getChild("writer_edit") + +xArgs = mkPropertyValues({"Text": "something"}) +self.xUITest.executeCommandWithParameters(".uno:InsertText", xArgs) +self.xUITest.executeCommand(".uno:InsertPageHeader") +self.xUITest.executeCommand(".uno:Undo") +self.xUITest.executeCommand(".uno:Undo") + # vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx index ee08206bd7ef..4f38197f7ce9 100644 --- a/sw/source/core/doc/docdesc.cxx +++ b/sw/source/core/doc/docdesc.cxx @@ -424,6 +424,90 @@ void SwDoc::ChgPageDesc( size_t i, const SwPageDesc ) GetIDocumentUndoRedo().AppendUndo(std::make_unique(rDesc, rChged, this)); } +else +{ +SwUndoId nBeingUndone; +GetIDocumentUndoRedo().GetFirstRedoInfo(nullptr, ); +if (SwUndoId::HEADER_FOOTER == nBeingUndone) +{ +// The last format change is currently being undone. Remove header/footer and corresponding nodes. +auto rDescMasterHeaderFormat = rDesc.GetMaster().GetFormatAttr(RES_HEADER); +auto rDescLeftHeaderFormat = rDesc.GetLeft().GetFormatAttr(RES_HEADER); +auto rDescFirstLeftHeaderFormat = rDesc.GetFirstLeft().GetFormatAttr(RES_HEADER); +auto rDescMasterFooterFormat = rDesc.GetMaster().GetFormatAttr(RES_FOOTER); +auto rDescLeftFooterFormat = rDesc.GetLeft().GetFormatAttr(RES_FOOTER); +auto rDescFirstLeftFooterFormat = rDesc.GetFirstLeft().GetFormatAttr(RES_FOOTER); + +auto rChgedMasterHeaderFormat = rChged.GetMaster().GetFormatAttr(RES_HEADER); +auto rChgedLeftHeaderFormat = rChged.GetLeft().GetFormatAttr(RES_HEADER); +auto rChgedFirstLeftHeaderFormat = rChged.GetFirstLeft().GetFormatAttr(RES_HEADER); +auto rChgedMasterFooterFormat = rChged.GetMaster().GetFormatAttr(RES_FOOTER); +auto rChgedLeftFooterFormat = rChged.GetLeft().GetFormatAttr(RES_FOOTER); +auto rChgedFirstLeftFooterFormat = rChged.GetFirstLeft().GetFormatAttr(RES_FOOTER); + +rDesc.GetMaster().ResetFormatAttr(RES_HEADER); +rDesc.GetLeft().ResetFormatAttr(RES_HEADER); +rDesc.GetFirstLeft().ResetFormatAttr(RES_HEADER); +rDesc.GetMaster().ResetFormatAttr(RES_FOOTER); +rDesc.GetLeft().ResetFormatAttr(RES_FOOTER); +rDesc.GetFirstLeft().ResetFormatAttr(RES_FOOTER); + +auto lDelHFFormat = [this](SwClient* pToRemove, SwFrameFormat* pFormat) +{ +// Code taken from lcl_DelHFFormat +pFormat->Remove(pToRemove); +SwFormatContent& rCnt = const_cast(pFormat->GetContent()); +if (rCnt.GetContentIdx()) +{ +SwNode* pNode = nullptr; +{ +SwNodeIndex aIdx(*rCnt.GetContentIdx(), 0); +pNode = (); +sal_uInt32 nEnd = pNode->EndOfSectionIndex(); +while (aIdx < nEnd) +
[Libreoffice-commits] core.git: include/oox oox/source sw/qa sw/source
include/oox/export/drawingml.hxx |8 +++-- include/oox/export/vmlexport.hxx |6 ++- oox/source/export/drawingml.cxx | 31 ++- oox/source/export/vmlexport.cxx | 10 +++--- sw/qa/extras/ooxmlexport/data/tdf118535.odt |binary sw/qa/extras/ooxmlexport/ooxmlexport16.cxx | 13 sw/source/filter/ww8/docxattributeoutput.cxx | 42 --- sw/source/filter/ww8/docxattributeoutput.hxx | 11 +++ sw/source/filter/ww8/docxexport.cxx |4 -- 9 files changed, 88 insertions(+), 37 deletions(-) New commits: commit 797fef38612fb2fd62d1f6591619b9361e526bca Author: Daniel Arato (NISZ) AuthorDate: Tue Mar 9 14:11:11 2021 +0100 Commit: László Németh CommitDate: Fri Mar 26 13:07:57 2021 +0100 tdf#118535 DOCX export: save header image once Writer used to dump the same image file as many times as it was featured in different headers or footers in the document, bloating the .docx file size. This is countered by making all "relationships" in the header*.xml.rels files point to the same image. Change-Id: I44d72630289c721d58d8f7e208517df2f1fe621c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112656 Tested-by: László Németh Reviewed-by: László Németh diff --git a/include/oox/export/drawingml.hxx b/include/oox/export/drawingml.hxx index 2cd17e6defb0..cfcad30fa257 100644 --- a/include/oox/export/drawingml.hxx +++ b/include/oox/export/drawingml.hxx @@ -125,8 +125,10 @@ public: virtual void WriteTextBox(css::uno::Reference xShape) = 0; /// Look up the RelId of a graphic based on its checksum. virtual OUString FindRelId(BitmapChecksum nChecksum) = 0; -/// Store the RelId of a graphic based on its checksum. -virtual void CacheRelId(BitmapChecksum nChecksum, const OUString& rRelId) = 0; +/// Look up the filename of a graphic based on its checksum. +virtual OUString FindFileName(BitmapChecksum nChecksum) = 0; +/// Store the RelId and filename of a graphic based on its checksum. +virtual void CacheRelId(BitmapChecksum nChecksum, const OUString& rRelId, const OUString& rFileName) = 0; /// Get textbox which belongs to the shape. virtual css::uno::Reference GetUnoTextFrame( css::uno::Reference xShape) = 0; @@ -192,7 +194,7 @@ public: void SetBackgroundDark(bool bIsDark) { mbIsBackgroundDark = bIsDark; } /// If bRelPathToMedia is true add "../" to image folder path while adding the image relationship -OUString WriteImage( const Graphic , bool bRelPathToMedia = false); +OUString WriteImage( const Graphic , bool bRelPathToMedia = false, OUString* pFileName = nullptr ); void WriteColor( ::Color nColor, sal_Int32 nAlpha = MAX_PERCENT ); void WriteColor( const OUString& sColorSchemeName, const css::uno::Sequence< css::beans::PropertyValue >& aTransformations, sal_Int32 nAlpha = MAX_PERCENT ); diff --git a/include/oox/export/vmlexport.hxx b/include/oox/export/vmlexport.hxx index dd5edc57c208..9a53a07652c8 100644 --- a/include/oox/export/vmlexport.hxx +++ b/include/oox/export/vmlexport.hxx @@ -67,8 +67,10 @@ public: virtual void WriteVMLTextBox(css::uno::Reference xShape) = 0; /// Look up the RelId of a graphic based on its checksum. virtual OUString FindRelId(BitmapChecksum nChecksum) = 0; -/// Store the RelId of a graphic based on its checksum. -virtual void CacheRelId(BitmapChecksum nChecksum, const OUString& rRelId) = 0; +/// Look up the filename of a graphic based on its checksum. +virtual OUString FindFileName(BitmapChecksum nChecksum) = 0; +/// Store the RelId and filename of a graphic based on its checksum. +virtual void CacheRelId(BitmapChecksum nChecksum, const OUString& rRelId, const OUString& rFileName) = 0; protected: VMLTextExport() {} virtual ~VMLTextExport() {} diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 67f26e71daea..32780296ce89 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1162,7 +1162,7 @@ const char* DrawingML::GetRelationCompPrefix() const return "unknown"; } -OUString DrawingML::WriteImage( const Graphic& rGraphic , bool bRelPathToMedia ) +OUString DrawingML::WriteImage( const Graphic& rGraphic , bool bRelPathToMedia, OUString* pFileName ) { GfxLink aLink = rGraphic.GetGfxLink (); OUString sMediaType; @@ -1266,15 +1266,18 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic , bool bRelPathToMedia ) sRelationCompPrefix = "../"; else sRelationCompPrefix = GetRelationCompPrefix(); +OUString sPath = OUStringBuffer() + .appendAscii( sRelationCompPrefix.getStr() ) + .appendAscii( sRelPathToMedia.getStr() ) + .append( static_cast(mnImageCounter ++) ) + .appendAscii(
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/extras/uiwriter/uiwriter.cxx |4 - sw/qa/uitest/data/tdf46561.odt |binary sw/qa/uitest/writer_tests7/tdf46561.py | 105 + sw/source/core/doc/docdesc.cxx | 87 +-- sw/source/core/layout/pagedesc.cxx | 27 +--- 5 files changed, 156 insertions(+), 67 deletions(-) New commits: commit 8d8486f43c1a8a51157bfc3e0b87090b05a9229e Author: Daniel Arato (NISZ) AuthorDate: Mon Feb 22 16:59:38 2021 +0100 Commit: Balazs Varga CommitDate: Wed Mar 17 13:10:27 2021 +0100 tdf#46561 sw: fix lost undo stack setting header/footer Changing 'shared' setting of left vs right or first vs non-first page headers or footers removed the whole undo stack. Note: style changes before a 'shared' change can still not be undone. Co-authored-by: Attila Bakos (NISZ) Change-Id: I6875bd0581869ffeb853911347dbc9f8c666214b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111635 Reviewed-by: László Németh Reviewed-by: Balazs Varga Tested-by: Balazs Varga diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index c39659fa9bab..dae657a35088 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -2225,7 +2225,9 @@ void SwUiWriterTest::testTextCursorInvalidation() // this does not actually delete the header: xPageStyle->setPropertyValue("HeaderIsOn", uno::makeAny(false)); pWrtShell->ChangeHeaderOrFooter(u"Default Page Style", true, false, false); // must be disposed after deleting header -CPPUNIT_ASSERT_THROW(xCursor->goRight(1, false), uno::RuntimeException); +// cursor ends up in body +// UPDATE: this behaviour has been corrected as a side effect of the fix to tdf#46561: +//CPPUNIT_ASSERT_THROW(xCursor->goRight(1, false), uno::RuntimeException); } void SwUiWriterTest::testTdf68183() diff --git a/sw/qa/uitest/data/tdf46561.odt b/sw/qa/uitest/data/tdf46561.odt new file mode 100644 index ..c9f9942521d0 Binary files /dev/null and b/sw/qa/uitest/data/tdf46561.odt differ diff --git a/sw/qa/uitest/writer_tests7/tdf46561.py b/sw/qa/uitest/writer_tests7/tdf46561.py new file mode 100644 index ..235136524903 --- /dev/null +++ b/sw/qa/uitest/writer_tests7/tdf46561.py @@ -0,0 +1,105 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +from uitest.framework import UITestCase +from libreoffice.uno.propertyvalue import mkPropertyValues +from uitest.uihelper.common import select_pos +from uitest.uihelper.common import type_text +import importlib +import org.libreoffice.unotest +import pathlib + +def get_url_for_data_file(file_name): +return pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri() + +class tdf46561(UITestCase): +def check_header_texts(self, master="", first="", left="", right=""): +# Get the current header style and its text contents +xPageStyle = self.document.getStyleFamilies().getByIndex(2) +xHeaderText = xPageStyle.getByIndex(0).HeaderText.String +xHeaderTextFirst = xPageStyle.getByIndex(0).HeaderTextFirst.String +xHeaderTextLeft = xPageStyle.getByIndex(0).HeaderTextLeft.String +xHeaderTextRight = xPageStyle.getByIndex(0).HeaderTextRight.String + +# Check the current values +self.assertEqual(master, xHeaderText) +self.assertEqual(first, xHeaderTextFirst) +self.assertEqual(left, xHeaderTextLeft) +self.assertEqual(right, xHeaderTextRight) + +def test_tdf46561(self): +self.ui_test.load_file(get_url_for_data_file("tdf46561.odt")) +self.document = self.ui_test.get_component() +self.check_header_texts(master="right", first="1st", left="left", right="right") + +xWriterDoc = self.xUITest.getTopFocusWindow() +xWriterEdit = xWriterDoc.getChild("writer_edit") +xWriterEdit.executeAction("GOTO", mkPropertyValues({"PAGE": "2"})) +self.xUITest.executeCommand(".uno:JumpToHeader") + +# Switch "same left and right page headers" on and off a few times +for _ in range(4): +self.ui_test.execute_dialog_through_command(".uno:PageDialog") +PageDialog = self.xUITest.getTopFocusWindow(); + +xTabs = PageDialog.getChild("tabcontrol") +select_pos(xTabs, "4") + +Button = xTabs.getChild('checkSameLR') +Button.executeAction("CLICK",tuple()) +ok = PageDialog.getChild("ok") +self.ui_test.close_dialog_through_button(ok) + +# We should be back to the starting state after 2*k on/off changes +self.check_header_texts(master="right", first="1st",
[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - sw/qa writerfilter/source
sw/qa/extras/ooxmlexport/data/tdf140668.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport16.cxx|6 ++ writerfilter/source/dmapper/DomainMapper_Impl.hxx |3 +-- 3 files changed, 7 insertions(+), 2 deletions(-) New commits: commit bbafee3424fdc59d2f69204fefab8a318aeec0e1 Author: Daniel Arato (NISZ) AuthorDate: Fri Feb 26 09:28:51 2021 +0100 Commit: Xisco Fauli CommitDate: Mon Mar 1 20:00:15 2021 +0100 tdf#140668 Crashfix: disregard w:textDirection tag outside frame DomainMapper_Impl::SetFrameDirection had a false assumption that a w:textDirection tag will only be encountered when the OOXML parser is already inside a frame. This is not always the case. Regression from commit af4e5ee0f93c1ff442d08caed5c875f2b2c1fd43 (tdf#97128 DOCX import: fix frame direction). Change-Id: I39845599b0c7f502870e2de497df8cbdd4475594 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111594 Tested-by: Jenkins Tested-by: László Németh Reviewed-by: Xisco Fauli Reviewed-by: László Németh Signed-off-by: Xisco Fauli Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111754 diff --git a/sw/qa/extras/ooxmlexport/data/tdf140668.docx b/sw/qa/extras/ooxmlexport/data/tdf140668.docx new file mode 100644 index ..d7072187bb57 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf140668.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx index 1a57488b67e7..e4b4ab0b0a83 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx @@ -39,6 +39,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf138892_noNumbering, "tdf138892_noNumbering.docx" CPPUNIT_ASSERT_MESSAGE("Para3: ", getProperty(getParagraph(3), "NumberingStyleName").isEmpty()); } +DECLARE_OOXMLEXPORT_TEST(testTdf140668, "tdf140668.docx") +{ +// Don't crash when document is opened +CPPUNIT_ASSERT_EQUAL(1, getPages()); +} + DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf134619_numberingProps, "tdf134619_numberingProps.doc") { // Get the third paragraph's numbering style's 1st level's bullet size diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index afd55fe28a26..cd318ab054fa 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -966,8 +966,7 @@ public: m_bFrameDirectionSet = false; } void SetFrameDirection(sal_Int16 nDirection) { -if (!m_bFrameDirectionSet) { -assert(!m_aFrameDirectionQueue.empty()); +if (!m_bFrameDirectionSet && !m_aFrameDirectionQueue.empty()) { m_aFrameDirectionQueue.back() = nDirection; m_bFrameDirectionSet = true; } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sw/inc sw/qa sw/source
sw/inc/pagedesc.hxx | 17 + sw/qa/uitest/data/tdf140117.fodt| 95 sw/qa/uitest/writer_tests7/tdf140117.py | 70 +++ sw/source/core/doc/docdesc.cxx | 70 ++- sw/source/core/layout/pagedesc.cxx | 73 5 files changed, 311 insertions(+), 14 deletions(-) New commits: commit f5dc6b11d2218d94c9effe7a1ab418d0133da5e3 Author: Daniel Arato (NISZ) AuthorDate: Tue Jan 26 13:11:42 2021 +0100 Commit: László Németh CommitDate: Tue Mar 2 11:10:29 2021 +0100 tdf#140117 sw UI: keep headers/footers when inactive Custom left page and first headers (and footers) used to disappear forever if hidden temporarily by checking the "Same content on left and right pages" or "Same content on first page" options, respectively. This commit stashes the endangered headers (footers) in SwPageDesc and restores them on demand. Change-Id: I1f6b605e2bd19af18726de1b825721487d29b4eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110398 Tested-by: Jenkins Reviewed-by: László Németh diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx index 7f2eaa9c9d53..0d29eb0ca6e3 100644 --- a/sw/inc/pagedesc.hxx +++ b/sw/inc/pagedesc.hxx @@ -148,6 +148,17 @@ class SW_DLLPUBLIC SwPageDesc // FIXME epicycles growing here - page margins need to be stored differently SwFrameFormatm_FirstMaster; SwFrameFormatm_FirstLeft; + +struct StashedPageDesc +{ +std::shared_ptr m_pStashedFirst; +std::shared_ptr m_pStashedLeft; +std::shared_ptr m_pStashedFirstLeft; +}; + +mutable StashedPageDesc m_aStashedHeader; +mutable StashedPageDesc m_aStashedFooter; + sw::WriterMultiListener m_aDepends; ///< Because of grid alignment (Registerhaltigkeit). mutable const SwTextFormatColl* m_pTextFormatColl; SwPageDesc *m_pFollow; @@ -206,6 +217,12 @@ public: bool IsHidden() const { return m_IsHidden; } void SetHidden(bool const bValue) { m_IsHidden = bValue; } +/// Remember original header/footer formats even when they are hidden by "sharing". +void StashFrameFormat(const SwFrameFormat& rFormat, bool bHeader, bool bLeft, bool bFirst); + +/// Used to restore hidden header/footer formats. +const SwFrameFormat* GetStashedFrameFormat(bool bHeader, bool bLeft, bool bFirst) const; + /// Same as WriteUseOn(), but the >= HeaderShare part of the bitfield is not modified. inline void SetUseOn( UseOnPage eNew ); inline UseOnPage GetUseOn() const; diff --git a/sw/qa/uitest/data/tdf140117.fodt b/sw/qa/uitest/data/tdf140117.fodt new file mode 100644 index ..8487346d1d5c --- /dev/null +++ b/sw/qa/uitest/data/tdf140117.fodt @@ -0,0 +1,95 @@ + +http://www.w3.org/TR/css3-text/; xmlns:grddl="http://www.w3.org/2003/g/data-view#; xmlns:xhtml="http://www.w3.org/1999/xhtml; xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; xmlns:xsd="http://www.w3.org/2001/XMLSchema; xmlns:dom="http://www.w3.org/2001/xml-events; xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:xforms="http://www.w3.org/2002/xforms; xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:drawooo="http://openoffice.org/2010/draw; xmlns:math="http://www.w3.org/1998/Math/MathML; xmlns:tableooo="http://openoffice.org/2009/table; xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:oooc="http://openoffice.org/2004/calc; xmlns:ooow="http://openoffice.org/200 4/writer" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink; xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/; xmlns:ooo="http://openoffice.org/2004/office; xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:rpt="http://openoffice.org/2005/report; xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:officeooo="http://openoffice.org/2009/office; xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:open document:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" office:version="1.3"
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-0' - oox/qa oox/source
oox/qa/unit/data/camera-rotation-revolution.docx |binary oox/qa/unit/drawingml.cxx| 25 + oox/source/drawingml/shape.cxx |7 +++-- oox/source/export/drawingml.cxx | 32 +-- 4 files changed, 60 insertions(+), 4 deletions(-) New commits: commit 2dc62fd2fb797db2bf9c1f4876f1cf1ff9bce329 Author: Daniel Arato (NISZ) AuthorDate: Tue Sep 29 16:37:41 2020 +0200 Commit: Gabor Kelemen CommitDate: Wed Feb 24 10:54:51 2021 +0100 tdf#133037 OOXML shape import: camera rotation along Z Instead of implementing proper OOXML 3D rotation (which would be an entirely new feature if I understand correctly), I merely interpret attribute "rev" of the rotation element a:camera/a:rot as a directive to rotate the entire shape the usual 2D way. That is already implemented and works well. This isn't the same thing Word does, but it might be good enough for now. This is kind of a mock solution, but it will be very easy to revert if it turns out to cause problems. Note: the export worked well previously, too (moreover, reloading the first LO export fixed the import). Change-Id: I2a99c119880bbed1c5b6430c4638cfbd10b7ac06 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103627 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit a9c5c0d814a266096483572b84c72875ef8efd77) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111430 Tested-by: Gabor Kelemen Reviewed-by: Gabor Kelemen diff --git a/oox/qa/unit/data/camera-rotation-revolution.docx b/oox/qa/unit/data/camera-rotation-revolution.docx new file mode 100644 index ..74054aa82b3f Binary files /dev/null and b/oox/qa/unit/data/camera-rotation-revolution.docx differ diff --git a/oox/qa/unit/drawingml.cxx b/oox/qa/unit/drawingml.cxx index 7fcee1756a6f..6a0415b257f2 100644 --- a/oox/qa/unit/drawingml.cxx +++ b/oox/qa/unit/drawingml.cxx @@ -265,6 +265,31 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testShapeTextAdjustLeft) CPPUNIT_ASSERT_EQUAL(drawing::TextHorizontalAdjust_BLOCK, eAdjust); } +CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testCameraRotationRevolution) +{ +OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "camera-rotation-revolution.docx"; +load(aURL); + +uno::Reference xDrawPagesSupplier(getComponent(), uno::UNO_QUERY); +uno::Reference xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); +uno::Reference xShape0(xDrawPage->getByIndex(0), uno::UNO_QUERY); +uno::Reference xShape1(xDrawPage->getByIndex(1), uno::UNO_QUERY); +uno::Reference xShapeProps0(xShape0, uno::UNO_QUERY); +uno::Reference xShapeProps1(xShape1, uno::UNO_QUERY); +sal_Int32 nRotateAngle0; +sal_Int32 nRotateAngle1; +xShapeProps0->getPropertyValue("RotateAngle") >>= nRotateAngle0; +xShapeProps1->getPropertyValue("RotateAngle") >>= nRotateAngle1; + +// Without the accompanying fix in place, this test would have failed with: +// - Expected: 8000 +// - Actual : 0 +// so the camera rotation would not have been factored into how the shape is displayed +CPPUNIT_ASSERT_EQUAL(static_cast(8000), nRotateAngle0); +CPPUNIT_ASSERT_EQUAL(static_cast(27000), nRotateAngle1); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 173095b37df2..c5c77e29038f 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1473,11 +1473,14 @@ Reference< XShape > const & Shape::createAndInsert( else if( getTextBody() ) getTextBody()->getTextProperties().pushVertSimulation(); +// tdf#133037: a bit hackish: force Shape to rotate in the opposite direction the camera would rotate +const sal_Int32 nCameraRotation = get3DProperties().maCameraRotation.mnRevolution.get(0); + PropertySet aPropertySet(mxShape); -if ( !bUseRotationTransform && mnRotation != 0 ) +if ( !bUseRotationTransform && (mnRotation != 0 || nCameraRotation != 0) ) { // use the same logic for rotation from VML exporter (SimpleShape::implConvertAndInsert at vmlshape.cxx) -aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle36000( mnRotation / -600 ) ) ) ); +aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle36000( (mnRotation - nCameraRotation) / -600 ) ) ) ); aPropertySet.setAnyProperty( PROP_HoriOrientPosition, makeAny( maPosition.X ) ); aPropertySet.setAnyProperty( PROP_VertOrientPosition, makeAny( maPosition.Y ) ); } diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 0728a131550f..5ca65a44639d
[Libreoffice-commits] core.git: sw/qa writerfilter/source
sw/qa/extras/ooxmlexport/data/tdf140668.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport16.cxx|6 ++ writerfilter/source/dmapper/DomainMapper_Impl.hxx |3 +-- 3 files changed, 7 insertions(+), 2 deletions(-) New commits: commit 027cc8c90badd4dd8a3436d859587c1b8732459f Author: Daniel Arato (NISZ) AuthorDate: Fri Feb 26 09:28:51 2021 +0100 Commit: László Németh CommitDate: Mon Mar 1 15:32:49 2021 +0100 tdf#140668 Crashfix: disregard w:textDirection tag outside frame DomainMapper_Impl::SetFrameDirection had a false assumption that a w:textDirection tag will only be encountered when the OOXML parser is already inside a frame. This is not always the case. Regression from commit af4e5ee0f93c1ff442d08caed5c875f2b2c1fd43 (tdf#97128 DOCX import: fix frame direction). Change-Id: I39845599b0c7f502870e2de497df8cbdd4475594 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111594 Tested-by: Jenkins Tested-by: László Németh Reviewed-by: Xisco Fauli Reviewed-by: László Németh diff --git a/sw/qa/extras/ooxmlexport/data/tdf140668.docx b/sw/qa/extras/ooxmlexport/data/tdf140668.docx new file mode 100644 index ..d7072187bb57 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf140668.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx index 29798dcabdec..f53078d6a332 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx @@ -78,6 +78,12 @@ CPPUNIT_TEST_FIXTURE(Test, testGutterTop) assertXPath(pXmlSettings, "/w:settings/w:gutterAtTop", 1); } +DECLARE_OOXMLEXPORT_TEST(testTdf140668, "tdf140668.docx") +{ +// Don't crash when document is opened +CPPUNIT_ASSERT_EQUAL(1, getPages()); +} + DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf134619_numberingProps, "tdf134619_numberingProps.doc") { // Get the third paragraph's numbering style's 1st level's bullet size diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 581d2dba6692..4a654822fb90 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -986,8 +986,7 @@ public: m_bFrameDirectionSet = false; } void SetFrameDirection(sal_Int16 nDirection) { -if (!m_bFrameDirectionSet) { -assert(!m_aFrameDirectionQueue.empty()); +if (!m_bFrameDirectionSet && !m_aFrameDirectionQueue.empty()) { m_aFrameDirectionQueue.back() = nDirection; m_bFrameDirectionSet = true; } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-0' - sw/qa sw/source
sw/qa/core/layout/data/textbox-phantom-change.docx |binary sw/qa/core/layout/layout.cxx | 20 ++ sw/qa/extras/ooxmlimport/ooxmlimport.cxx |2 - sw/source/core/draw/dcontact.cxx | 29 - 4 files changed, 49 insertions(+), 2 deletions(-) New commits: commit 800bdfd06fd41b1305852f01d5a2aaaf33da9431 Author: Daniel Arato (NISZ) AuthorDate: Mon Nov 16 11:53:47 2020 +0100 Commit: Gabor Kelemen CommitDate: Mon Mar 1 13:51:33 2021 +0100 tdf#135198 tdf#138050 sw editing: fix text box position sync Follow-up to commit c9eb53f200225f2ee6ca695e1326843a487aee51 (tdf#135198 sw editing: text box fell out of its shape) Every time a shape is repositioned, make sure the text box inside the shape follows the shape. The previous solution to this bug, the one implemented in SwObjectFormatterTextFrame::DoFormatObjs, was a little more cumbersome. This one should produce fewer regressions, I hope. Change-Id: I3e88eb8616cd299cabb7b74b188ab7220746ec89 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106421 Tested-by: Jenkins Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 59fec754a1523eede0f19a59e4eeeff593a4d688) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111704 Tested-by: Gabor Kelemen Reviewed-by: Gabor Kelemen diff --git a/sw/qa/core/layout/data/textbox-phantom-change.docx b/sw/qa/core/layout/data/textbox-phantom-change.docx new file mode 100644 index ..75ac039561f6 Binary files /dev/null and b/sw/qa/core/layout/data/textbox-phantom-change.docx differ diff --git a/sw/qa/core/layout/layout.cxx b/sw/qa/core/layout/layout.cxx index b4fc9f3a5176..57f7c49a8eae 100644 --- a/sw/qa/core/layout/layout.cxx +++ b/sw/qa/core/layout/layout.cxx @@ -10,6 +10,13 @@ #include #include + +#include +#include +#include +#include +#include +#include #include #include @@ -149,6 +156,19 @@ CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testContinuousEndnotesMoveBackwards) assertXPath(pLayout, "/root/page[2]/ftncont", 1); } +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxNotModifiedOnOpen) +{ +// tdf#138050: a freshly opened document containing a shape with a text box +// should not appear to be modified +load(DATA_DIRECTORY, "textbox-phantom-change.docx"); +SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); +SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + +// Without the fix in place this test would have shown that the document +// was modified due to a fix to tdf#135198 +CPPUNIT_ASSERT(!pDoc->getIDocumentState().IsModified()); +} + CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxAutoGrowVertical) { load(DATA_DIRECTORY, "textbox-autogrow-vertical.docx"); diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index f932e9739800..3ed3e2b6bc24 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -1018,7 +1018,7 @@ DECLARE_OOXMLIMPORT_TEST(textboxWpsOnly, "textbox-wps-only.docx") if ( nsScreen.frame.size.width * scaleFactor > 4000 ) return; #endif -CPPUNIT_ASSERT_EQUAL(sal_Int32(2805), getProperty(xFrame, "VertOrientPosition")); +CPPUNIT_ASSERT_EQUAL(sal_Int32(5304), getProperty(xFrame, "VertOrientPosition")); } DECLARE_OOXMLIMPORT_TEST(testGroupshapeRelsize, "groupshape-relsize.docx") diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index ad672260a834..050c041b92c5 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -50,6 +50,8 @@ #include #include #include +#include +#include #include #include #include @@ -1261,7 +1263,6 @@ void SwDrawContact::Changed_( const SdrObject& rObj, const SwFormatVertOrient& rVert = GetFormat()->GetVertOrient(); if ( nYPosDiff != 0 ) { - if ( rVert.GetRelationOrient() == text::RelOrientation::CHAR || rVert.GetRelationOrient() == text::RelOrientation::TEXT_LINE ) { @@ -1314,6 +1315,32 @@ void SwDrawContact::Changed_( const SdrObject& rObj, // may affect the size of the underlying textbox. lcl_textBoxSizeNotify(GetFormat()); } + +// tdf#135198: keep text box together with its shape +SwRect aObjRect(rObj.GetSnapRect()); +const SwPageFrame* rPageFrame = pAnchoredDrawObj->GetPageFrame(); +if (rPageFrame && rPageFrame->isFrameAreaPositionValid()) +{ +SwDoc* const pDoc = GetFormat()->GetDoc(); + +// avoid Undo creation +::sw::UndoGuard const ug(pDoc->GetIDocumentUndoRedo()); + +// hide any artificial
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-0' - sw/source
sw/source/uibase/dochdl/swdtflvr.cxx | 18 ++ 1 file changed, 18 insertions(+) New commits: commit 515afc9d17003255910b403ac26705867332d9e1 Author: Daniel Arato (NISZ) AuthorDate: Tue Sep 8 16:56:58 2020 +0200 Commit: Gabor Kelemen CommitDate: Tue Apr 20 13:35:26 2021 +0200 tdf#135669 sw: drag and drop other files as OLE from file managers. Native text, PDF and image file formats were supported, but now spreadsheet and DOCX documents, too. The same feature was already implemented in e.g. Impress. Note: DOCX files inserted as OLE objects yet, and not linked files in sections, as ODTs (but it's possible saving and printing them via Save As option of the local menu of the OLE object). Change-Id: Ia2fafe4a0b79dc0c66eaec5ad073c994f98e1345 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102263 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit a354b7f7476513e5b1b4bbf1986b483cf122d47b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114283 Tested-by: Gabor Kelemen Reviewed-by: Gabor Kelemen diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx index cb1e8f51a262..5be9cc5533ee 100644 --- a/sw/source/uibase/dochdl/swdtflvr.cxx +++ b/sw/source/uibase/dochdl/swdtflvr.cxx @@ -2256,6 +2256,19 @@ bool SwTransferable::PasteOLE( TransferableDataHelper& rData, SwWrtShell& rSh, } } } +else if (rData.HasFormat(SotClipboardFormatId::SIMPLE_FILE)) +{ +OUString sFile; +if (rData.GetString(nFormat, sFile) && !sFile.isEmpty()) +{ +// Copied from sd::View::DropInsertFileHdl +uno::Sequence< beans::PropertyValue > aMedium(1); +aMedium[0].Name = "URL"; +aMedium[0].Value <<= sFile; +SwDocShell* pDocSh = rSh.GetDoc()->GetDocShell(); +xObj = pDocSh->GetEmbeddedObjectContainer().InsertEmbeddedObject(aMedium, aName); +} +} } if ( xStrm.is() && !xObj.is() ) @@ -3033,6 +3046,11 @@ bool SwTransferable::PasteFileName( TransferableDataHelper& rData, rSh.StartInsertRegionDialog( aSect ); // starts dialog asynchronously bRet = true; } +else if (SwPasteSdr::Insert == nAction && rData.HasFormat(SotClipboardFormatId::SIMPLE_FILE)) +{ +// insert file as OLE +PasteOLE(rData, rSh, nFormat, nActionFlags, nullptr == pPt); +} else if( SwPasteSdr::SetAttr == nAction || ( bIsURLFile && SwPasteSdr::Insert == nAction )) { ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: sc/qa sc/source
sc/qa/unit/data/xlsx/tdf142881.xlsx|binary sc/qa/unit/subsequent_export-test2.cxx | 37 + sc/source/filter/xcl97/xcl97rec.cxx|2 - 3 files changed, 38 insertions(+), 1 deletion(-) New commits: commit eae0636311d3a1b3a1af58a3e4df686b55afa3fa Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 30 14:13:52 2021 +0200 Commit: László Németh CommitDate: Tue Aug 31 13:56:38 2021 +0200 tdf#142881 XLSX import: fix shapes rotated exactly 45°, 135°, 225° and 315° by correcting their cell anchor points, like MSO does. Previously the XLSX export with the bad anchor points messed up the rotation of the shapes, resulting also broken text content in LO and MSO. Thanks to Regina Henschel for analyzing the problem. Co-authored-by: Szabolcs Tóth Change-Id: Ica625545a22a74ed027ac0fa2bbf38804611c172 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121307 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sc/qa/unit/data/xlsx/tdf142881.xlsx b/sc/qa/unit/data/xlsx/tdf142881.xlsx new file mode 100644 index ..a25dfec68551 Binary files /dev/null and b/sc/qa/unit/data/xlsx/tdf142881.xlsx differ diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx index 36409864817b..a25babe59134 100644 --- a/sc/qa/unit/subsequent_export-test2.cxx +++ b/sc/qa/unit/subsequent_export-test2.cxx @@ -155,6 +155,7 @@ public: void testTdf115159(); void testTdf112567(); void testTdf122191(); +void testTdf142881(); void testTdf112567b(); void testTdf123645XLSX(); void testTdf125173XLSX(); @@ -261,6 +262,7 @@ public: CPPUNIT_TEST(testTdf115159); CPPUNIT_TEST(testTdf112567); CPPUNIT_TEST(testTdf122191); +CPPUNIT_TEST(testTdf142881); CPPUNIT_TEST(testTdf112567b); CPPUNIT_TEST(testTdf123645XLSX); CPPUNIT_TEST(testTdf125173XLSX); @@ -1407,6 +1409,41 @@ void ScExportTest2::testTdf122191() xDocSh->DoClose(); } +void ScExportTest2::testTdf142881() +{ +ScDocShellRef xDocSh = loadDoc(u"tdf142881.", FORMAT_XLSX); +CPPUNIT_ASSERT_MESSAGE("Failed to load tdf142881.xlsx", xDocSh.is()); + +std::shared_ptr pXPathFile += ScBootstrapFixture::exportTo(&(*xDocSh), FORMAT_XLSX); +xmlDocUniquePtr pDrawing1 += XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/drawings/drawing1.xml"); +CPPUNIT_ASSERT(pDrawing1); + +// Verify that the shapes are rotated and positioned in the expected way +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:from/xdr:col", "11"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:from/xdr:row", "0"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:to/xdr:col", "12"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:to/xdr:row", "19"); + +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:from/xdr:col", "2"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:from/xdr:row", "8"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:to/xdr:col", "7"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:to/xdr:row", "10"); + +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:from/xdr:col", "10"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:from/xdr:row", "9"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:to/xdr:col", "11"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:to/xdr:row", "26"); + +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:from/xdr:col", "2"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:from/xdr:row", "17"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:to/xdr:col", "8"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:to/xdr:row", "19"); + +xDocSh->DoClose(); +} + void ScExportTest2::testTdf112567b() { // Set the system locale to Hungarian (a language with different range separator) diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx index 3a05578f14e2..bdc3648d7584 100644 --- a/sc/source/filter/xcl97/xcl97rec.cxx +++ b/sc/source/filter/xcl97/xcl97rec.cxx @@ -1120,7 +1120,7 @@ void XclObjAny::WriteFromTo( XclExpXmlStream& rStrm, const Reference< XShape >& // MSO changes the anchor positions at these angles and that does an extra 90 degrees // rotation on our shapes, so we output it in such position that MSO // can draw this shape correctly. -if ((nRotation >= 4500_deg100 && nRotation < 13500_deg100) || (nRotation >= 22500_deg100 && nRotation < 31500_deg100)) +if ((nRotation > 4500_deg100 && nRotation <= 13500_deg100) || (nRotation > 22500_deg100 &&
[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - sc/qa sc/source
sc/qa/unit/data/xlsx/tdf142881.xlsx|binary sc/qa/unit/subsequent_export-test2.cxx | 37 + sc/source/filter/xcl97/xcl97rec.cxx|2 - 3 files changed, 38 insertions(+), 1 deletion(-) New commits: commit 30128c2fea22ccd08678744c9501ab052a1fb074 Author: Daniel Arato (NISZ) AuthorDate: Mon Aug 30 14:13:52 2021 +0200 Commit: Xisco Fauli CommitDate: Wed Sep 1 11:31:53 2021 +0200 tdf#142881 XLSX import: fix shapes rotated exactly 45°, 135°, 225° and 315° by correcting their cell anchor points, like MSO does. Previously the XLSX export with the bad anchor points messed up the rotation of the shapes, resulting also broken text content in LO and MSO. Thanks to Regina Henschel for analyzing the problem. Co-authored-by: Szabolcs Tóth Change-Id: Ica625545a22a74ed027ac0fa2bbf38804611c172 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121307 Tested-by: László Németh Reviewed-by: László Németh Signed-off-by: Xisco Fauli Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121407 Tested-by: Jenkins diff --git a/sc/qa/unit/data/xlsx/tdf142881.xlsx b/sc/qa/unit/data/xlsx/tdf142881.xlsx new file mode 100644 index ..a25dfec68551 Binary files /dev/null and b/sc/qa/unit/data/xlsx/tdf142881.xlsx differ diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx index c467b19196aa..77e4bc37673e 100644 --- a/sc/qa/unit/subsequent_export-test2.cxx +++ b/sc/qa/unit/subsequent_export-test2.cxx @@ -153,6 +153,7 @@ public: void testTdf91634XLSX(); void testTdf115159(); void testTdf112567(); +void testTdf142881(); void testTdf112567b(); void testTdf123645XLSX(); void testTdf125173XLSX(); @@ -254,6 +255,7 @@ public: CPPUNIT_TEST(testTdf91634XLSX); CPPUNIT_TEST(testTdf115159); CPPUNIT_TEST(testTdf112567); +CPPUNIT_TEST(testTdf142881); CPPUNIT_TEST(testTdf112567b); CPPUNIT_TEST(testTdf123645XLSX); CPPUNIT_TEST(testTdf125173XLSX); @@ -1365,6 +1367,41 @@ void ScExportTest2::testTdf112567() xDocSh->DoClose(); } +void ScExportTest2::testTdf142881() +{ +ScDocShellRef xDocSh = loadDoc(u"tdf142881.", FORMAT_XLSX); +CPPUNIT_ASSERT_MESSAGE("Failed to load tdf142881.xlsx", xDocSh.is()); + +std::shared_ptr pXPathFile += ScBootstrapFixture::exportTo(&(*xDocSh), FORMAT_XLSX); +xmlDocUniquePtr pDrawing1 += XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/drawings/drawing1.xml"); +CPPUNIT_ASSERT(pDrawing1); + +// Verify that the shapes are rotated and positioned in the expected way +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:from/xdr:col", "11"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:from/xdr:row", "0"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:to/xdr:col", "12"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[1]/xdr:to/xdr:row", "19"); + +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:from/xdr:col", "2"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:from/xdr:row", "8"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:to/xdr:col", "7"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[2]/xdr:to/xdr:row", "10"); + +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:from/xdr:col", "10"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:from/xdr:row", "9"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:to/xdr:col", "11"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[3]/xdr:to/xdr:row", "26"); + +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:from/xdr:col", "2"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:from/xdr:row", "17"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:to/xdr:col", "8"); +assertXPathContent(pDrawing1, "/xdr:wsDr/xdr:twoCellAnchor[4]/xdr:to/xdr:row", "19"); + +xDocSh->DoClose(); +} + void ScExportTest2::testTdf112567b() { // Set the system locale to Hungarian (a language with different range separator) diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx index 4cde52e362f1..b88604fb306d 100644 --- a/sc/source/filter/xcl97/xcl97rec.cxx +++ b/sc/source/filter/xcl97/xcl97rec.cxx @@ -1108,7 +1108,7 @@ void XclObjAny::WriteFromTo( XclExpXmlStream& rStrm, const Reference< XShape >& // MSO changes the anchor positions at these angles and that does an extra 90 degrees // rotation on our shapes, so we output it in such position that MSO // can draw this shape correctly. -if ((nRotation >= 4500_deg100 && nRotation < 13500_deg100) || (nRotation >= 22500_deg100 && nRotation <
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-1' - sw/qa sw/source
sw/qa/extras/ooxmlexport/data/tdf69635.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport14.cxx|5 + sw/qa/extras/ooxmlexport/ooxmlexport16.cxx| 56 +++ sw/qa/extras/ooxmlexport/ooxmlexport4.cxx | 22 +++--- sw/qa/extras/ooxmlexport/ooxmlexport5.cxx |6 - sw/qa/extras/ooxmlexport/ooxmlexport6.cxx |2 sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 12 +-- sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx |2 sw/source/filter/ww8/docxexport.cxx |9 +- sw/source/filter/ww8/docxexport.hxx |3 sw/source/filter/ww8/rtfexport.cxx| 10 +- sw/source/filter/ww8/rtfexport.hxx|6 + sw/source/filter/ww8/wrtw8sty.cxx | 95 +++--- sw/source/filter/ww8/wrtww8.hxx |8 +- 14 files changed, 189 insertions(+), 47 deletions(-) New commits: commit d9caf9814696c747e4b0277bc7377ba09aead334 Author: Daniel Arato (NISZ) AuthorDate: Fri Feb 5 12:07:48 2021 +0100 Commit: Tünde Tóth CommitDate: Thu Oct 21 11:42:19 2021 +0200 tdf#69635 DOCX: export hidden (shared) headers/footers Exporting to .docx used to lose all header and footer content that was not visible in the document at the moment of saving. This commit forces the DocxExport class to output all headers and footers even when the "Same content on left and right pages" option is turned on. Change-Id: I6a52f216f1e1b386d887ec614198766670b5bce3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113158 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 88e6a1bfeac86e0c89d2ff08c908c2b5ae061177) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123970 Tested-by: Tünde Tóth Reviewed-by: Tünde Tóth diff --git a/sw/qa/extras/ooxmlexport/data/tdf69635.docx b/sw/qa/extras/ooxmlexport/data/tdf69635.docx new file mode 100644 index ..94cced4d2ae4 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf69635.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx index a740b6295999..2ee47d611adf 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx @@ -671,7 +671,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf130167_spilloverHeaderShape, "testTdf130167_spil uno::Reference xNameAccess( xTextGraphicObjectsSupplier->getGraphicObjects(), uno::UNO_QUERY); // graphics from discarded headers were being added to the text body. Reduced from 5 to 2 shapes overall. +<<< HEAD (7b6bf0 tdf#142128 sw: set author-color strikethrough for AS_CHAR im) CPPUNIT_ASSERT(xNameAccess->getCount() < 4); +=== +// CPPUNIT_ASSERT(xNameAccess->getCount() <= 4); -> What about hidden headers? +CPPUNIT_ASSERT_LESS(sal_Int32(9), xNameAccess->getCount()); +>>> CHANGE (88e6a1 tdf#69635 DOCX: export hidden (shared) headers/footers) } DECLARE_OOXMLEXPORT_TEST(testTdf124986, "tdf124986.docx") diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx index 7e890145210d..a20c8bfb9fe3 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx @@ -50,6 +50,62 @@ DECLARE_OOXMLEXPORT_TEST(testTdf138892_noNumbering, "tdf138892_noNumbering.docx" CPPUNIT_ASSERT_MESSAGE("Para3: ", getProperty(getParagraph(3), "NumberingStyleName").isEmpty()); } +DECLARE_OOXMLEXPORT_TEST(testTdf141231_arabicHebrewNumbering, "tdf141231_arabicHebrewNumbering.docx") +{ +// The page's numbering type: instead of Hebrew, this was default style::NumberingType::ARABIC (4). +auto nActual = getProperty(getStyles("PageStyles")->getByName("Standard"), "NumberingType"); +CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_HEBREW, nActual); + +// The footnote numbering type: instead of arabicAbjad, this was the default style::NumberingType::ARABIC. +uno::Reference xFootnotesSupplier(mxComponent, uno::UNO_QUERY); +uno::Reference xFootnoteSettings = xFootnotesSupplier->getFootnoteSettings(); +nActual = getProperty(xFootnotesSupplier->getFootnoteSettings(), "NumberingType"); +CPPUNIT_ASSERT_EQUAL(style::NumberingType::CHARS_ARABIC_ABJAD, nActual); +} + +DECLARE_OOXMLEXPORT_TEST(testGutterLeft, "gutter-left.docx") +{ +uno::Reference xPageStyle; +getStyles("PageStyles")->getByName("Standard") >>= xPageStyle; +sal_Int32 nGutterMargin{}; +xPageStyle->getPropertyValue("GutterMargin") >>= nGutterMargin; +// Without the accompanying fix in place, this test would have failed with: +// - Expected: 1270 +// - Actual : 0 +// i.e. gutter margin was lost. +CPPUNIT_ASSERT_EQUAL(static_cast(1270), nGutterMargin); +} + +CPPUNIT_TEST_FIXTURE(Test, testGutterTop) +{ +load(mpTestDocumentPath, "gutter-top.docx"); +save("Office Open XML Text", maTempFile); +
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-1' - sw/inc sw/qa sw/source
sw/inc/pagedesc.hxx | 17 + sw/qa/uitest/data/tdf140117.fodt| 95 sw/qa/uitest/writer_tests7/tdf140117.py | 70 +++ sw/source/core/doc/docdesc.cxx | 70 ++- sw/source/core/layout/pagedesc.cxx | 73 5 files changed, 311 insertions(+), 14 deletions(-) New commits: commit 2ede6c34ad39569570521ac2fdbae6c722ba096b Author: Daniel Arato (NISZ) AuthorDate: Tue Jan 26 13:11:42 2021 +0100 Commit: Tünde Tóth CommitDate: Thu Oct 21 11:52:46 2021 +0200 tdf#140117 sw UI: keep headers/footers when inactive Custom left page and first headers (and footers) used to disappear forever if hidden temporarily by checking the "Same content on left and right pages" or "Same content on first page" options, respectively. This commit stashes the endangered headers (footers) in SwPageDesc and restores them on demand. Change-Id: I1f6b605e2bd19af18726de1b825721487d29b4eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110398 Tested-by: Jenkins Reviewed-by: László Németh (cherry picked from commit f5dc6b11d2218d94c9effe7a1ab418d0133da5e3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123971 Tested-by: Tünde Tóth Reviewed-by: Tünde Tóth diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx index 44bb7ee33b52..5e561623da69 100644 --- a/sw/inc/pagedesc.hxx +++ b/sw/inc/pagedesc.hxx @@ -148,6 +148,17 @@ class SW_DLLPUBLIC SwPageDesc // FIXME epicycles growing here - page margins need to be stored differently SwFrameFormatm_FirstMaster; SwFrameFormatm_FirstLeft; + +struct StashedPageDesc +{ +std::shared_ptr m_pStashedFirst; +std::shared_ptr m_pStashedLeft; +std::shared_ptr m_pStashedFirstLeft; +}; + +mutable StashedPageDesc m_aStashedHeader; +mutable StashedPageDesc m_aStashedFooter; + sw::WriterMultiListener m_aDepends; ///< Because of grid alignment (Registerhaltigkeit). mutable const SwTextFormatColl* m_pTextFormatColl; SwPageDesc *m_pFollow; @@ -206,6 +217,12 @@ public: bool IsHidden() const { return m_IsHidden; } void SetHidden(bool const bValue) { m_IsHidden = bValue; } +/// Remember original header/footer formats even when they are hidden by "sharing". +void StashFrameFormat(const SwFrameFormat& rFormat, bool bHeader, bool bLeft, bool bFirst); + +/// Used to restore hidden header/footer formats. +const SwFrameFormat* GetStashedFrameFormat(bool bHeader, bool bLeft, bool bFirst) const; + /// Same as WriteUseOn(), but the >= HeaderShare part of the bitfield is not modified. inline void SetUseOn( UseOnPage eNew ); inline UseOnPage GetUseOn() const; diff --git a/sw/qa/uitest/data/tdf140117.fodt b/sw/qa/uitest/data/tdf140117.fodt new file mode 100644 index ..8487346d1d5c --- /dev/null +++ b/sw/qa/uitest/data/tdf140117.fodt @@ -0,0 +1,95 @@ + +http://www.w3.org/TR/css3-text/; xmlns:grddl="http://www.w3.org/2003/g/data-view#; xmlns:xhtml="http://www.w3.org/1999/xhtml; xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; xmlns:xsd="http://www.w3.org/2001/XMLSchema; xmlns:dom="http://www.w3.org/2001/xml-events; xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:xforms="http://www.w3.org/2002/xforms; xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:drawooo="http://openoffice.org/2010/draw; xmlns:math="http://www.w3.org/1998/Math/MathML; xmlns:tableooo="http://openoffice.org/2009/table; xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:oooc="http://openoffice.org/2004/calc; xmlns:ooow="http://openoffice.org/200 4/writer" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink; xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/; xmlns:ooo="http://openoffice.org/2004/office; xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:rpt="http://openoffice.org/2005/report; xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:officeooo="http://openoffice.org/2009/office; xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-1' - sw/qa sw/source
sw/qa/extras/uiwriter/uiwriter.cxx |4 - sw/qa/uitest/data/tdf46561.odt |binary sw/qa/uitest/writer_tests7/tdf46561.py | 105 + sw/source/core/doc/docdesc.cxx | 87 +-- sw/source/core/layout/pagedesc.cxx | 27 +--- 5 files changed, 156 insertions(+), 67 deletions(-) New commits: commit 9b4b8c8cf0b17d8f217db3a8af56db192789bbd3 Author: Daniel Arato (NISZ) AuthorDate: Mon Feb 22 16:59:38 2021 +0100 Commit: Tünde Tóth CommitDate: Thu Oct 21 12:03:31 2021 +0200 tdf#46561 sw: fix lost undo stack setting header/footer Changing 'shared' setting of left vs right or first vs non-first page headers or footers removed the whole undo stack. Note: style changes before a 'shared' change can still not be undone. Co-authored-by: Attila Bakos (NISZ) Change-Id: I6875bd0581869ffeb853911347dbc9f8c666214b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111635 Reviewed-by: László Németh Reviewed-by: Balazs Varga Tested-by: Balazs Varga (cherry picked from commit 8d8486f43c1a8a51157bfc3e0b87090b05a9229e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123973 Tested-by: Tünde Tóth Reviewed-by: Tünde Tóth diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index 702dc90636fd..f876e993db1f 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -2215,7 +2215,9 @@ void SwUiWriterTest::testTextCursorInvalidation() // this does not actually delete the header: xPageStyle->setPropertyValue("HeaderIsOn", uno::makeAny(false)); pWrtShell->ChangeHeaderOrFooter("Default Page Style", true, false, false); // must be disposed after deleting header -CPPUNIT_ASSERT_THROW(xCursor->goRight(1, false), uno::RuntimeException); +// cursor ends up in body +// UPDATE: this behaviour has been corrected as a side effect of the fix to tdf#46561: +//CPPUNIT_ASSERT_THROW(xCursor->goRight(1, false), uno::RuntimeException); } void SwUiWriterTest::testTdf68183() diff --git a/sw/qa/uitest/data/tdf46561.odt b/sw/qa/uitest/data/tdf46561.odt new file mode 100644 index ..c9f9942521d0 Binary files /dev/null and b/sw/qa/uitest/data/tdf46561.odt differ diff --git a/sw/qa/uitest/writer_tests7/tdf46561.py b/sw/qa/uitest/writer_tests7/tdf46561.py new file mode 100644 index ..235136524903 --- /dev/null +++ b/sw/qa/uitest/writer_tests7/tdf46561.py @@ -0,0 +1,105 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +from uitest.framework import UITestCase +from libreoffice.uno.propertyvalue import mkPropertyValues +from uitest.uihelper.common import select_pos +from uitest.uihelper.common import type_text +import importlib +import org.libreoffice.unotest +import pathlib + +def get_url_for_data_file(file_name): +return pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri() + +class tdf46561(UITestCase): +def check_header_texts(self, master="", first="", left="", right=""): +# Get the current header style and its text contents +xPageStyle = self.document.getStyleFamilies().getByIndex(2) +xHeaderText = xPageStyle.getByIndex(0).HeaderText.String +xHeaderTextFirst = xPageStyle.getByIndex(0).HeaderTextFirst.String +xHeaderTextLeft = xPageStyle.getByIndex(0).HeaderTextLeft.String +xHeaderTextRight = xPageStyle.getByIndex(0).HeaderTextRight.String + +# Check the current values +self.assertEqual(master, xHeaderText) +self.assertEqual(first, xHeaderTextFirst) +self.assertEqual(left, xHeaderTextLeft) +self.assertEqual(right, xHeaderTextRight) + +def test_tdf46561(self): +self.ui_test.load_file(get_url_for_data_file("tdf46561.odt")) +self.document = self.ui_test.get_component() +self.check_header_texts(master="right", first="1st", left="left", right="right") + +xWriterDoc = self.xUITest.getTopFocusWindow() +xWriterEdit = xWriterDoc.getChild("writer_edit") +xWriterEdit.executeAction("GOTO", mkPropertyValues({"PAGE": "2"})) +self.xUITest.executeCommand(".uno:JumpToHeader") + +# Switch "same left and right page headers" on and off a few times +for _ in range(4): +self.ui_test.execute_dialog_through_command(".uno:PageDialog") +PageDialog = self.xUITest.getTopFocusWindow(); + +xTabs = PageDialog.getChild("tabcontrol") +select_pos(xTabs, "4") + +Button = xTabs.getChild('checkSameLR') +Button.executeAction("CLICK",tuple()) +ok = PageDialog.getChild("ok") +
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-1' - sw/qa sw/source
sw/qa/uitest/writer_tests7/tdf46561.py | 13 + sw/source/core/doc/docdesc.cxx | 84 + 2 files changed, 97 insertions(+) New commits: commit a456306df9d66e109a807a4245256b341e81040b Author: Daniel Arato (NISZ) AuthorDate: Mon Apr 26 15:04:17 2021 +0200 Commit: Tünde Tóth CommitDate: Thu Oct 21 13:06:43 2021 +0200 tdf#141613 sw: fix crash at header/footer undo Undoing the creation of a header/footer used to leave their corresponding document nodes intact, causing the node index of a previous undo entry to point to the wrong node. We now force the destruction of the header/footer nodes manually. We also cut the redo chain which loses the redo history, but solves another crash for now (when redoing the creation of the header). The proper solution would be to create a new SwUndo* derived class from scratch to represent the creation of a new header/footer section in the document. Regression from commit 8d8486f43c1a8a51157bfc3e0b87090b05a9229e (tdf#46561 sw: fix lost undo stack setting header/footer) Change-Id: I97188aa8ded802bc6b6fa88ddd83a95c40de8bc3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114667 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 65e52cb61d74b0c71b45b63b2da131bc6b621104) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123976 Tested-by: Tünde Tóth Reviewed-by: Tünde Tóth diff --git a/sw/qa/uitest/writer_tests7/tdf46561.py b/sw/qa/uitest/writer_tests7/tdf46561.py index 235136524903..02760cf76d96 100644 --- a/sw/qa/uitest/writer_tests7/tdf46561.py +++ b/sw/qa/uitest/writer_tests7/tdf46561.py @@ -102,4 +102,17 @@ class tdf46561(UITestCase): self.ui_test.close_doc() +# Check that former crash has been fixed +def test_tdf141613(self): +self.ui_test.create_doc_in_start_center("writer") + +xWriterDoc = self.xUITest.getTopFocusWindow() +xWriterEdit = xWriterDoc.getChild("writer_edit") + +xArgs = mkPropertyValues({"Text": "something"}) +self.xUITest.executeCommandWithParameters(".uno:InsertText", xArgs) +self.xUITest.executeCommand(".uno:InsertPageHeader") +self.xUITest.executeCommand(".uno:Undo") +self.xUITest.executeCommand(".uno:Undo") + # vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx index a85975eac359..164404ce3016 100644 --- a/sw/source/core/doc/docdesc.cxx +++ b/sw/source/core/doc/docdesc.cxx @@ -419,6 +419,90 @@ void SwDoc::ChgPageDesc( size_t i, const SwPageDesc ) GetIDocumentUndoRedo().AppendUndo(std::make_unique(rDesc, rChged, this)); } +else +{ +SwUndoId nBeingUndone; +GetIDocumentUndoRedo().GetFirstRedoInfo(nullptr, ); +if (SwUndoId::HEADER_FOOTER == nBeingUndone) +{ +// The last format change is currently being undone. Remove header/footer and corresponding nodes. +auto rDescMasterHeaderFormat = rDesc.GetMaster().GetFormatAttr(RES_HEADER); +auto rDescLeftHeaderFormat = rDesc.GetLeft().GetFormatAttr(RES_HEADER); +auto rDescFirstLeftHeaderFormat = rDesc.GetFirstLeft().GetFormatAttr(RES_HEADER); +auto rDescMasterFooterFormat = rDesc.GetMaster().GetFormatAttr(RES_FOOTER); +auto rDescLeftFooterFormat = rDesc.GetLeft().GetFormatAttr(RES_FOOTER); +auto rDescFirstLeftFooterFormat = rDesc.GetFirstLeft().GetFormatAttr(RES_FOOTER); + +auto rChgedMasterHeaderFormat = rChged.GetMaster().GetFormatAttr(RES_HEADER); +auto rChgedLeftHeaderFormat = rChged.GetLeft().GetFormatAttr(RES_HEADER); +auto rChgedFirstLeftHeaderFormat = rChged.GetFirstLeft().GetFormatAttr(RES_HEADER); +auto rChgedMasterFooterFormat = rChged.GetMaster().GetFormatAttr(RES_FOOTER); +auto rChgedLeftFooterFormat = rChged.GetLeft().GetFormatAttr(RES_FOOTER); +auto rChgedFirstLeftFooterFormat = rChged.GetFirstLeft().GetFormatAttr(RES_FOOTER); + +rDesc.GetMaster().ResetFormatAttr(RES_HEADER); +rDesc.GetLeft().ResetFormatAttr(RES_HEADER); +rDesc.GetFirstLeft().ResetFormatAttr(RES_HEADER); +rDesc.GetMaster().ResetFormatAttr(RES_FOOTER); +rDesc.GetLeft().ResetFormatAttr(RES_FOOTER); +rDesc.GetFirstLeft().ResetFormatAttr(RES_FOOTER); + +auto lDelHFFormat = [this](SwClient* pToRemove, SwFrameFormat* pFormat) +{ +// Code taken from lcl_DelHFFormat +pFormat->Remove(pToRemove); +SwFormatContent& rCnt = const_cast(pFormat->GetContent()); +if (rCnt.GetContentIdx()) +{ +SwNode* pNode = nullptr; +{ +SwNodeIndex
[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-1' - sw/source
sw/source/core/doc/docdesc.cxx |3 --- sw/source/uibase/shells/basesh.cxx |6 ++ 2 files changed, 6 insertions(+), 3 deletions(-) New commits: commit c3a0f570ece7799166d8b21dc7c7417fa6b19ec6 Author: Daniel Arato (NISZ) AuthorDate: Mon Apr 26 15:04:17 2021 +0200 Commit: Tünde Tóth CommitDate: Thu Oct 21 13:11:15 2021 +0200 tdf#141613 sw: avoid possible crash when undoing header creation Move the ClearRedo() call to the very end of the undo process in order to avoid heap use after free. We still need to call ClearRedo() because there's no mechanism in place to Redo a header/footer change. Regression from commit 65e52cb61d74b0c71b45b63b2da131bc6b621104 "tdf#141613 sw: fix crash at header/footer undo". Change-Id: Ibd4604379c9791e85aef3d4dc6c29c9e3ecd5a28 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115275 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit 0cd000bb83719982c1fd2265ea040c82af5bf98e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123977 Tested-by: Tünde Tóth Reviewed-by: Tünde Tóth diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx index 164404ce3016..d94f23b87fcb 100644 --- a/sw/source/core/doc/docdesc.cxx +++ b/sw/source/core/doc/docdesc.cxx @@ -498,9 +498,6 @@ void SwDoc::ChgPageDesc( size_t i, const SwPageDesc ) lDelHFFormat(, rDescLeftFooterFormat.GetFooterFormat()); else if (rDescFirstLeftFooterFormat.GetFooterFormat() && rDescFirstLeftFooterFormat != rChgedFirstLeftFooterFormat) lDelHFFormat(, rDescFirstLeftFooterFormat.GetFooterFormat()); - -// FIXME: Disable redoing this change until we figure out how -GetIDocumentUndoRedo().ClearRedo(); } } ::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo()); diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx index 359dea043183..8d774615522e 100644 --- a/sw/source/uibase/shells/basesh.cxx +++ b/sw/source/uibase/shells/basesh.cxx @@ -557,6 +557,12 @@ void SwBaseShell::ExecUndo(SfxRequest ) rWrtShell.Do( SwWrtShell::UNDO, nCnt ); for (SwViewShell& rShell : rWrtShell.GetRingContainer()) rShell.UnlockPaint(); + +// tdf#141613 FIXME: Disable redoing header/footer changes for now. +// The proper solution would be to write a SwUndoHeaderFooter class +// to represent the addition of a header or footer to the current page. +if (nUndoId == SwUndoId::HEADER_FOOTER) +rUndoRedo.ClearRedo(); } break;
[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - sc/qa sc/source
sc/qa/unit/data/ods/header-footer-content.ods |binary sc/qa/unit/subsequent_export-test2.cxx| 36 ++ sc/source/filter/xml/XMLTableMasterPageExport.cxx |2 - 3 files changed, 37 insertions(+), 1 deletion(-) New commits: commit ccd1393611ff7ea71d2dc5d75b0c27a4794ebdbb Author: Daniel Arato (NISZ) AuthorDate: Wed Sep 22 15:03:48 2021 +0200 Commit: Michael Stahl CommitDate: Tue Sep 28 14:18:50 2021 +0200 tdf#144184 sc: fix first page footer export Due to a typical case of copy-paste oversight LO Calc used to lose the first page footer when exporting to ODS. With the typo fixed, the export now works again. Follow-up to commit 19fa853ce12136b5c14e0c5a0aa906c296b75388 "tdf#121715 XLSX: support custom first page header/footer". Change-Id: If8f5ab4ff9a9392768789b886218d1d9c56ddbae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122455 Tested-by: László Németh Reviewed-by: László Németh Signed-off-by: Xisco Fauli Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122764 Tested-by: Jenkins diff --git a/sc/qa/unit/data/ods/header-footer-content.ods b/sc/qa/unit/data/ods/header-footer-content.ods new file mode 100644 index ..f365748ddc22 Binary files /dev/null and b/sc/qa/unit/data/ods/header-footer-content.ods differ diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx index dde758e2bd5b..dc72c46aebf4 100644 --- a/sc/qa/unit/subsequent_export-test2.cxx +++ b/sc/qa/unit/subsequent_export-test2.cxx @@ -82,6 +82,7 @@ #include #include #include +#include #include using namespace ::com::sun::star; @@ -125,6 +126,7 @@ public: void testRefStringConfigXLSX(); void testRefStringUnspecified(); void testHeaderImageODS(); +void testHeaderFooterContentODS(); void testTdf88657ODS(); void testTdf41722(); @@ -227,6 +229,7 @@ public: CPPUNIT_TEST(testRefStringConfigXLSX); CPPUNIT_TEST(testRefStringUnspecified); CPPUNIT_TEST(testHeaderImageODS); +CPPUNIT_TEST(testHeaderFooterContentODS); CPPUNIT_TEST(testTdf88657ODS); CPPUNIT_TEST(testTdf41722); @@ -474,6 +477,39 @@ void ScExportTest2::testHeaderImageODS() xDocSh->DoClose(); } +void ScExportTest2::testHeaderFooterContentODS() +{ +ScDocShellRef xShell = loadDoc(u"header-footer-content.", FORMAT_ODS); +ScDocShellRef xDocSh = saveAndReload(&(*xShell), FORMAT_ODS); +uno::Reference xStyleFamiliesSupplier(xDocSh->GetModel(), + uno::UNO_QUERY); +uno::Reference xStyleFamilies += xStyleFamiliesSupplier->getStyleFamilies(); +uno::Reference xPageStyles(xStyleFamilies->getByName("PageStyles"), + uno::UNO_QUERY); +uno::Reference xStyle(xPageStyles->getByName("Default"), uno::UNO_QUERY); + +uno::Reference xContent; +xStyle->getPropertyValue("RightPageHeaderContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("header"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("FirstPageHeaderContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("first page header"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("RightPageFooterContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("footer"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("FirstPageFooterContent") >>= xContent; +// First page footer content used to be lost upon export. +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("first page footer"), xContent->getCenterText()->getString()); + +xDocSh->DoClose(); +} + void ScExportTest2::testTextDirectionXLSX() { ScDocShellRef xDocSh = loadDoc(u"writingMode.", FORMAT_XLSX); diff --git a/sc/source/filter/xml/XMLTableMasterPageExport.cxx b/sc/source/filter/xml/XMLTableMasterPageExport.cxx index bf43b2c29fb2..59b29378ea16 100644 --- a/sc/source/filter/xml/XMLTableMasterPageExport.cxx +++ b/sc/source/filter/xml/XMLTableMasterPageExport.cxx @@ -187,7 +187,7 @@ void XMLTableMasterPageExport::exportMasterPageContent( bool bFirstFooter = (!::cppu::any2bool(rPropSet->getPropertyValue( SC_UNO_PAGE_FIRSTFTRSHARED )) && bFooter); -exportHeaderFooter( xFooterLeft, XML_FOOTER_FIRST, bFirstFooter ); +exportHeaderFooter( xFooterFirst, XML_FOOTER_FIRST, bFirstFooter ); } }
[Libreoffice-commits] core.git: sc/qa sc/source
sc/qa/unit/data/ods/header-footer-content.ods |binary sc/qa/unit/subsequent_export_test2.cxx| 36 ++ sc/source/filter/xml/XMLTableMasterPageExport.cxx |2 - 3 files changed, 37 insertions(+), 1 deletion(-) New commits: commit 6f04952e6828cf1419b991e82070514bae24896c Author: Daniel Arato (NISZ) AuthorDate: Wed Sep 22 15:03:48 2021 +0200 Commit: László Németh CommitDate: Tue Sep 28 11:32:53 2021 +0200 tdf#144184 sc: fix first page footer export Due to a typical case of copy-paste oversight LO Calc used to lose the first page footer when exporting to ODS. With the typo fixed, the export now works again. Follow-up to commit 19fa853ce12136b5c14e0c5a0aa906c296b75388 "tdf#121715 XLSX: support custom first page header/footer". Change-Id: If8f5ab4ff9a9392768789b886218d1d9c56ddbae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122455 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sc/qa/unit/data/ods/header-footer-content.ods b/sc/qa/unit/data/ods/header-footer-content.ods new file mode 100644 index ..f365748ddc22 Binary files /dev/null and b/sc/qa/unit/data/ods/header-footer-content.ods differ diff --git a/sc/qa/unit/subsequent_export_test2.cxx b/sc/qa/unit/subsequent_export_test2.cxx index 41a25d2c0312..10743521d31c 100644 --- a/sc/qa/unit/subsequent_export_test2.cxx +++ b/sc/qa/unit/subsequent_export_test2.cxx @@ -83,6 +83,7 @@ #include #include #include +#include #include using namespace ::com::sun::star; @@ -126,6 +127,7 @@ public: void testRefStringConfigXLSX(); void testRefStringUnspecified(); void testHeaderImageODS(); +void testHeaderFooterContentODS(); void testTdf88657ODS(); void testTdf41722(); @@ -233,6 +235,7 @@ public: CPPUNIT_TEST(testRefStringConfigXLSX); CPPUNIT_TEST(testRefStringUnspecified); CPPUNIT_TEST(testHeaderImageODS); +CPPUNIT_TEST(testHeaderFooterContentODS); CPPUNIT_TEST(testTdf88657ODS); CPPUNIT_TEST(testTdf41722); @@ -485,6 +488,39 @@ void ScExportTest2::testHeaderImageODS() xDocSh->DoClose(); } +void ScExportTest2::testHeaderFooterContentODS() +{ +ScDocShellRef xShell = loadDoc(u"header-footer-content.", FORMAT_ODS); +ScDocShellRef xDocSh = saveAndReload(&(*xShell), FORMAT_ODS); +uno::Reference xStyleFamiliesSupplier(xDocSh->GetModel(), + uno::UNO_QUERY); +uno::Reference xStyleFamilies += xStyleFamiliesSupplier->getStyleFamilies(); +uno::Reference xPageStyles(xStyleFamilies->getByName("PageStyles"), + uno::UNO_QUERY); +uno::Reference xStyle(xPageStyles->getByName("Default"), uno::UNO_QUERY); + +uno::Reference xContent; +xStyle->getPropertyValue("RightPageHeaderContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("header"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("FirstPageHeaderContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("first page header"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("RightPageFooterContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("footer"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("FirstPageFooterContent") >>= xContent; +// First page footer content used to be lost upon export. +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("first page footer"), xContent->getCenterText()->getString()); + +xDocSh->DoClose(); +} + void ScExportTest2::testTextDirectionXLSX() { ScDocShellRef xDocSh = loadDoc(u"writingMode.", FORMAT_XLSX); diff --git a/sc/source/filter/xml/XMLTableMasterPageExport.cxx b/sc/source/filter/xml/XMLTableMasterPageExport.cxx index bf43b2c29fb2..59b29378ea16 100644 --- a/sc/source/filter/xml/XMLTableMasterPageExport.cxx +++ b/sc/source/filter/xml/XMLTableMasterPageExport.cxx @@ -187,7 +187,7 @@ void XMLTableMasterPageExport::exportMasterPageContent( bool bFirstFooter = (!::cppu::any2bool(rPropSet->getPropertyValue( SC_UNO_PAGE_FIRSTFTRSHARED )) && bFooter); -exportHeaderFooter( xFooterLeft, XML_FOOTER_FIRST, bFirstFooter ); +exportHeaderFooter( xFooterFirst, XML_FOOTER_FIRST, bFirstFooter ); } }
[Libreoffice-commits] core.git: Branch 'libreoffice-7-2-2' - sc/qa sc/source
sc/qa/unit/data/ods/header-footer-content.ods |binary sc/qa/unit/subsequent_export-test2.cxx| 36 ++ sc/source/filter/xml/XMLTableMasterPageExport.cxx |2 - 3 files changed, 37 insertions(+), 1 deletion(-) New commits: commit f75ec59c9a77065d4a39a4b433b139cabe1405e1 Author: Daniel Arato (NISZ) AuthorDate: Wed Sep 22 15:03:48 2021 +0200 Commit: Adolfo Jayme Barrientos CommitDate: Wed Sep 29 07:38:33 2021 +0200 tdf#144184 sc: fix first page footer export Due to a typical case of copy-paste oversight LO Calc used to lose the first page footer when exporting to ODS. With the typo fixed, the export now works again. Follow-up to commit 19fa853ce12136b5c14e0c5a0aa906c296b75388 "tdf#121715 XLSX: support custom first page header/footer". Change-Id: If8f5ab4ff9a9392768789b886218d1d9c56ddbae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122455 Tested-by: László Németh Reviewed-by: László Németh Signed-off-by: Xisco Fauli Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122764 Tested-by: Jenkins (cherry picked from commit ccd1393611ff7ea71d2dc5d75b0c27a4794ebdbb) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122742 Reviewed-by: Adolfo Jayme Barrientos Tested-by: Adolfo Jayme Barrientos diff --git a/sc/qa/unit/data/ods/header-footer-content.ods b/sc/qa/unit/data/ods/header-footer-content.ods new file mode 100644 index ..f365748ddc22 Binary files /dev/null and b/sc/qa/unit/data/ods/header-footer-content.ods differ diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx index 77e4bc37673e..f3bf709500b4 100644 --- a/sc/qa/unit/subsequent_export-test2.cxx +++ b/sc/qa/unit/subsequent_export-test2.cxx @@ -82,6 +82,7 @@ #include #include #include +#include #include using namespace ::com::sun::star; @@ -125,6 +126,7 @@ public: void testRefStringConfigXLSX(); void testRefStringUnspecified(); void testHeaderImageODS(); +void testHeaderFooterContentODS(); void testTdf88657ODS(); void testTdf41722(); @@ -227,6 +229,7 @@ public: CPPUNIT_TEST(testRefStringConfigXLSX); CPPUNIT_TEST(testRefStringUnspecified); CPPUNIT_TEST(testHeaderImageODS); +CPPUNIT_TEST(testHeaderFooterContentODS); CPPUNIT_TEST(testTdf88657ODS); CPPUNIT_TEST(testTdf41722); @@ -474,6 +477,39 @@ void ScExportTest2::testHeaderImageODS() xDocSh->DoClose(); } +void ScExportTest2::testHeaderFooterContentODS() +{ +ScDocShellRef xShell = loadDoc(u"header-footer-content.", FORMAT_ODS); +ScDocShellRef xDocSh = saveAndReload(&(*xShell), FORMAT_ODS); +uno::Reference xStyleFamiliesSupplier(xDocSh->GetModel(), + uno::UNO_QUERY); +uno::Reference xStyleFamilies += xStyleFamiliesSupplier->getStyleFamilies(); +uno::Reference xPageStyles(xStyleFamilies->getByName("PageStyles"), + uno::UNO_QUERY); +uno::Reference xStyle(xPageStyles->getByName("Default"), uno::UNO_QUERY); + +uno::Reference xContent; +xStyle->getPropertyValue("RightPageHeaderContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("header"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("FirstPageHeaderContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("first page header"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("RightPageFooterContent") >>= xContent; +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("footer"), xContent->getCenterText()->getString()); + +xStyle->getPropertyValue("FirstPageFooterContent") >>= xContent; +// First page footer content used to be lost upon export. +CPPUNIT_ASSERT(xContent.is()); +CPPUNIT_ASSERT_EQUAL(OUString("first page footer"), xContent->getCenterText()->getString()); + +xDocSh->DoClose(); +} + void ScExportTest2::testTextDirectionXLSX() { ScDocShellRef xDocSh = loadDoc(u"writingMode.", FORMAT_XLSX); diff --git a/sc/source/filter/xml/XMLTableMasterPageExport.cxx b/sc/source/filter/xml/XMLTableMasterPageExport.cxx index bf43b2c29fb2..59b29378ea16 100644 --- a/sc/source/filter/xml/XMLTableMasterPageExport.cxx +++ b/sc/source/filter/xml/XMLTableMasterPageExport.cxx @@ -187,7 +187,7 @@ void XMLTableMasterPageExport::exportMasterPageContent( bool bFirstFooter = (!::cppu::any2bool(rPropSet->getPropertyValue( SC_UNO_PAGE_FIRSTFTRSHARED )) && bFooter); -exportHeaderFooter( xFooterLeft, XML_FOOTER_FIRST, bFirstFooter ); +exportHeaderFooter( xFooterFirst, XML_FOOTER_FIRST, bFirstFooter ); } }
[Libreoffice-commits] core.git: sw/qa sw/source
sw/qa/extras/layout/data/tdf141220.docx |binary sw/qa/extras/layout/layout2.cxx | 12 sw/source/core/draw/dcontact.cxx|6 +++--- 3 files changed, 15 insertions(+), 3 deletions(-) New commits: commit 8da3586cff9cc11cf5db985d19851f21f0d42eb8 Author: Daniel Arato (NISZ) AuthorDate: Mon Sep 27 12:49:57 2021 +0200 Commit: Balazs Varga CommitDate: Fri Oct 1 12:30:52 2021 +0200 tdf#141220 sw: fix textbox popped out of off-page shape When you moved it downwards off the page it was anchored to, the textbox inside a shape used to appear exactly one page above the shape it was supposed to follow. This is hopefully fixed by the present commit. Regression from c9eb53f200225f2ee6ca695e1326843a487aee51 (tdf#135198 sw editing: text box fell out of its shape). Change-Id: Ib388292ca26444daa1900417347824059ee03f07 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122687 Reviewed-by: László Németh Reviewed-by: Balazs Varga Tested-by: Balazs Varga diff --git a/sw/qa/extras/layout/data/tdf141220.docx b/sw/qa/extras/layout/data/tdf141220.docx new file mode 100644 index ..a65bdd4b8a51 Binary files /dev/null and b/sw/qa/extras/layout/data/tdf141220.docx differ diff --git a/sw/qa/extras/layout/layout2.cxx b/sw/qa/extras/layout/layout2.cxx index 91cb32016942..8c2624b1a389 100644 --- a/sw/qa/extras/layout/layout2.cxx +++ b/sw/qa/extras/layout/layout2.cxx @@ -1419,6 +1419,18 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf127118) assertXPath(pXmlDoc, "/root/page[2]/body/tab/row[1]/cell[1]/txt[1]", "WritingMode", "VertBTLR"); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf141220) +{ +createSwDoc(DATA_DIRECTORY, "tdf141220.docx"); + +xmlDocUniquePtr pXmlDoc = parseLayoutDump(); +sal_Int32 nShapeTop += getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject/bounds", "top").toInt32(); +sal_Int32 nTextBoxTop = getXPath(pXmlDoc, "//anchored/fly/infos/bounds", "top").toInt32(); +// Make sure the textbox stays inside the shape. +CPPUNIT_ASSERT_LESS(static_cast(15), nTextBoxTop - nShapeTop); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf121509) { auto pDoc = createSwDoc(DATA_DIRECTORY, "Tdf121509.odt"); diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index 7cd60ce197d0..762b27251cbe 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -1342,7 +1342,6 @@ void SwDrawContact::Changed_( const SdrObject& rObj, } // tdf#135198: keep text box together with its shape -SwRect aObjRect(rObj.GetSnapRect()); const SwPageFrame* rPageFrame = pAnchoredDrawObj->GetPageFrame(); if (rPageFrame && rPageFrame->isFrameAreaPositionValid() && !rObj.getChildrenOfSdrObject()) { @@ -1359,10 +1358,11 @@ void SwDrawContact::Changed_( const SdrObject& rObj, pDoc->GetAttrPool(), svl::Items); aSyncSet.Put(GetFormat()->GetHoriOrient()); -aSyncSet.Put(SwFormatVertOrient(aObjRect.Top() - rPageFrame->getFrameArea().Top(), +bool bRelToTableCell(false); + aSyncSet.Put(SwFormatVertOrient(pAnchoredDrawObj->GetRelPosToPageFrame(false, bRelToTableCell).getY(), text::VertOrientation::NONE, text::RelOrientation::PAGE_FRAME)); -aSyncSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_PAGE, pAnchoredDrawObj->GetPageFrame()->GetPhyPageNum())); +aSyncSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_PAGE, rPageFrame->GetPhyPageNum())); auto pSdrObj = const_cast(); if (pSdrObj != GetFormat()->FindRealSdrObject())
[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - sw/qa sw/source
sw/qa/extras/layout/data/tdf141220.docx |binary sw/qa/extras/layout/layout2.cxx | 12 sw/source/core/draw/dcontact.cxx|6 +++--- 3 files changed, 15 insertions(+), 3 deletions(-) New commits: commit 7163450024000c01d2454aa7aad7f15a425f7ff2 Author: Daniel Arato (NISZ) AuthorDate: Mon Sep 27 12:49:57 2021 +0200 Commit: Xisco Fauli CommitDate: Mon Oct 4 13:44:19 2021 +0200 tdf#141220 sw: fix textbox popped out of off-page shape When you moved it downwards off the page it was anchored to, the textbox inside a shape used to appear exactly one page above the shape it was supposed to follow. This is hopefully fixed by the present commit. Regression from c9eb53f200225f2ee6ca695e1326843a487aee51 (tdf#135198 sw editing: text box fell out of its shape). Change-Id: Ib388292ca26444daa1900417347824059ee03f07 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122687 Reviewed-by: László Németh Reviewed-by: Balazs Varga Tested-by: Balazs Varga Signed-off-by: Xisco Fauli Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123040 Tested-by: Jenkins diff --git a/sw/qa/extras/layout/data/tdf141220.docx b/sw/qa/extras/layout/data/tdf141220.docx new file mode 100644 index ..a65bdd4b8a51 Binary files /dev/null and b/sw/qa/extras/layout/data/tdf141220.docx differ diff --git a/sw/qa/extras/layout/layout2.cxx b/sw/qa/extras/layout/layout2.cxx index 1db5f1e69214..3586afe23d3d 100644 --- a/sw/qa/extras/layout/layout2.cxx +++ b/sw/qa/extras/layout/layout2.cxx @@ -1445,6 +1445,18 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf127118) assertXPath(pXmlDoc, "/root/page[2]/body/tab/row[1]/cell[1]/txt[1]", "WritingMode", "VertBTLR"); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf141220) +{ +createSwDoc(DATA_DIRECTORY, "tdf141220.docx"); + +xmlDocUniquePtr pXmlDoc = parseLayoutDump(); +sal_Int32 nShapeTop += getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject/bounds", "top").toInt32(); +sal_Int32 nTextBoxTop = getXPath(pXmlDoc, "//anchored/fly/infos/bounds", "top").toInt32(); +// Make sure the textbox stays inside the shape. +CPPUNIT_ASSERT_LESS(static_cast(15), nTextBoxTop - nShapeTop); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf121509) { auto pDoc = createSwDoc(DATA_DIRECTORY, "Tdf121509.odt"); diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index 1f0632850ad2..d2554e0ab5ae 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -1337,7 +1337,6 @@ void SwDrawContact::Changed_( const SdrObject& rObj, } // tdf#135198: keep text box together with its shape -SwRect aObjRect(rObj.GetSnapRect()); const SwPageFrame* rPageFrame = pAnchoredDrawObj->GetPageFrame(); if (rPageFrame && rPageFrame->isFrameAreaPositionValid()) { @@ -1352,10 +1351,11 @@ void SwDrawContact::Changed_( const SdrObject& rObj, SfxItemSet aSyncSet(pDoc->GetAttrPool(), svl::Items{}); -aSyncSet.Put(SwFormatVertOrient(aObjRect.Top() - rPageFrame->getFrameArea().Top(), +bool bRelToTableCell(false); + aSyncSet.Put(SwFormatVertOrient(pAnchoredDrawObj->GetRelPosToPageFrame(false, bRelToTableCell).getY(), text::VertOrientation::NONE, text::RelOrientation::PAGE_FRAME)); -aSyncSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_PAGE, pAnchoredDrawObj->GetPageFrame()->GetPhyPageNum())); +aSyncSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_PAGE, rPageFrame->GetPhyPageNum())); SwTextBoxHelper::syncFlyFrameAttr(*GetFormat(), aSyncSet);
[Libreoffice-commits] core.git: oox/qa oox/source
oox/qa/unit/data/tdf142602_CustomShapeArrows.odt |binary oox/qa/unit/export.cxx | 190 oox/source/export/DMLPresetShapeExport.cxx | 352 +-- 3 files changed, 516 insertions(+), 26 deletions(-) New commits: commit 504808fb5c372a94c6299eec90a281655eef47e4 Author: Daniel Arato (NISZ) AuthorDate: Fri Sep 10 13:51:24 2021 +0200 Commit: László Németh CommitDate: Tue Sep 21 13:26:54 2021 +0200 tdf#142602 DOCX: export adjustment points of custom shape arrows When exporting custom shape arrows LO used to fall back to writing out their plain vertex coordinates, losing the customizability of the shape after loading from file. This commit changes the export of some of the most commonly used arrow custom shapes to proper adjustment value export. Follow-up to commit 63cd67e5e18f01aca303131e148c80398a181a41 "tdf#92525 tdf#142398: fix export of simple custom shapes". Change-Id: If248556764bdb7e00cfde4ebe5b32bb380b1fa19 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121901 Tested-by: László Németh Reviewed-by: László Németh diff --git a/oox/qa/unit/data/tdf142602_CustomShapeArrows.odt b/oox/qa/unit/data/tdf142602_CustomShapeArrows.odt new file mode 100644 index ..bc0357a1a867 Binary files /dev/null and b/oox/qa/unit/data/tdf142602_CustomShapeArrows.odt differ diff --git a/oox/qa/unit/export.cxx b/oox/qa/unit/export.cxx index 0e597adb2854..b649d546ead9 100644 --- a/oox/qa/unit/export.cxx +++ b/oox/qa/unit/export.cxx @@ -154,6 +154,196 @@ CPPUNIT_TEST_FIXTURE(Test, testDmlGroupshapePolygon) assertXPath(pXmlDoc, "//wpg:grpSpPr/a:xfrm/a:chExt", "cx", "5328360"); assertXPath(pXmlDoc, "//wps:spPr/a:xfrm/a:ext", "cx", "5328360"); } + +CPPUNIT_TEST_FIXTURE(Test, testCustomShapeArrowExport) +{ +// Given a document with a few different kinds of arrow shapes in it: +OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "tdf142602_CustomShapeArrows.odt"; +// When saving that to DOCX: +loadAndSave(aURL, "Office Open XML Text"); + +// Then the shapes should retain their correct control values. +uno::Reference xNameAccess += packages::zip::ZipFileAccess::createWithURL(mxComponentContext, getTempFile().GetURL()); +uno::Reference xInputStream(xNameAccess->getByName("word/document.xml"), + uno::UNO_QUERY); +std::unique_ptr pStream(utl::UcbStreamHelper::CreateStream(xInputStream, true)); +xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + +// Without the fix the output OOXML would have no tags in it. + +// Right arrow +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[1]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom", +"prst", "rightArrow"); +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[1]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom/a:avLst/a:gd[1]", +"fmla", "val 5"); +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[1]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom/a:avLst/a:gd[2]", +"fmla", "val 46321"); + +// Left arrow +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[2]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom", +"prst", "leftArrow"); +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[2]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom/a:avLst/a:gd[1]", +"fmla", "val 5"); +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[2]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom/a:avLst/a:gd[2]", +"fmla", "val 52939"); + +// Down arrow +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[3]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom", +"prst", "downArrow"); +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[3]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom/a:avLst/a:gd[1]", +"fmla", "val 5"); +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[3]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +"a:graphicData/wps:wsp/wps:spPr/a:prstGeom/a:avLst/a:gd[2]", +"fmla", "val 59399"); + +// Up arrow +assertXPath(pXmlDoc, + "//w:r/mc:AlternateContent[4]/mc:Choice/w:drawing/wp:anchor/a:graphic/" +
[Libreoffice-commits] core.git: sc/inc sc/qa sc/source sc/uiconfig sc/UIConfig_scalc.mk svx/source
sc/UIConfig_scalc.mk|4 sc/inc/scres.hrc|8 sc/qa/uitest/calc_tests9/tdf142763.py | 69 +++ sc/source/ui/attrdlg/scdlgfact.cxx | 12 + sc/source/ui/inc/hfedtdlg.hxx | 42 sc/source/ui/inc/scuitphfedit.hxx | 14 + sc/source/ui/pagedlg/hfedtdlg.cxx | 90 +- sc/source/ui/pagedlg/scuitphfedit.cxx | 26 ++ sc/source/ui/pagedlg/tphf.cxx | 28 ++- sc/uiconfig/scalc/ui/footerdialog.ui| 46 + sc/uiconfig/scalc/ui/headerdialog.ui| 46 + sc/uiconfig/scalc/ui/sharedfirstfooterdialog.ui | 209 sc/uiconfig/scalc/ui/sharedfirstheaderdialog.ui | 209 sc/uiconfig/scalc/ui/sharedleftfooterdialog.ui | 205 +++ sc/uiconfig/scalc/ui/sharedleftheaderdialog.ui | 205 +++ svx/source/dialog/hdft.cxx | 16 - 16 files changed, 1202 insertions(+), 27 deletions(-) New commits: commit 6128e2d55f0d0c68d3c7f6fb69539ec800637947 Author: Daniel Arato (NISZ) AuthorDate: Wed Jun 16 10:39:29 2021 +0200 Commit: László Németh CommitDate: Tue Jul 20 16:19:37 2021 +0200 tdf#142763 sc UI: add first page header/footer options Add checkbox "Same content on first page" checkbox (similar to the existing "Same content on left and right pages) to the Page Style dialog window, on the Header and Footer panes. Follow-up to commit 19fa853ce12136b5c14e0c5a0aa906c296b75388 (tdf#121715 XLSX: support custom first page header/footer) and commit 52beb3907dd3c7e6ae112e263def1005272cecd8 (tdf#142764 sc: import "Same content on first/left page"). Note: to set different header or footer on the first page of the spreadsheet, disable "Same content on first page" on Format->Page Style...->Header (or Footer), and choose the "Edit..." button. Change-Id: I3348fde216424b8d2c662956eab27cbe5880fc1e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117316 Tested-by: László Németh Reviewed-by: László Németh diff --git a/sc/UIConfig_scalc.mk b/sc/UIConfig_scalc.mk index e19172e49bd3..c7ddfa38f88f 100644 --- a/sc/UIConfig_scalc.mk +++ b/sc/UIConfig_scalc.mk @@ -217,6 +217,10 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/scalc,\ sc/uiconfig/scalc/ui/selectsource \ sc/uiconfig/scalc/ui/sheetprintpage \ sc/uiconfig/scalc/ui/sharedocumentdlg \ + sc/uiconfig/scalc/ui/sharedfirstfooterdialog \ + sc/uiconfig/scalc/ui/sharedfirstheaderdialog \ + sc/uiconfig/scalc/ui/sharedleftfooterdialog \ + sc/uiconfig/scalc/ui/sharedleftheaderdialog \ sc/uiconfig/scalc/ui/sharedfooterdialog \ sc/uiconfig/scalc/ui/sharedheaderdialog \ sc/uiconfig/scalc/ui/sharedwarningdialog \ diff --git a/sc/inc/scres.hrc b/sc/inc/scres.hrc index 57ac75843530..8089d41258f0 100644 --- a/sc/inc/scres.hrc +++ b/sc/inc/scres.hrc @@ -39,8 +39,12 @@ #define RID_SCDLG_HFEDIT_RIGHTHEADER(SC_DIALOGS_START + 65) #define RID_SCDLG_HFEDIT_LEFTFOOTER (SC_DIALOGS_START + 66) #define RID_SCDLG_HFEDIT_RIGHTFOOTER(SC_DIALOGS_START + 67) -#define RID_SCDLG_HFEDIT_HEADER (SC_DIALOGS_START + 68) -#define RID_SCDLG_HFEDIT_FOOTER (SC_DIALOGS_START + 69) +#define RID_SCDLG_HFEDIT_SHAREDFIRSTHEADER (SC_DIALOGS_START + 68) +#define RID_SCDLG_HFEDIT_SHAREDLEFTHEADER (SC_DIALOGS_START + 69) +#define RID_SCDLG_HFEDIT_SHAREDFIRSTFOOTER (SC_DIALOGS_START + 70) +#define RID_SCDLG_HFEDIT_SHAREDLEFTFOOTER (SC_DIALOGS_START + 71) +#define RID_SCDLG_HFEDIT_HEADER (SC_DIALOGS_START + 72) +#define RID_SCDLG_HFEDIT_FOOTER (SC_DIALOGS_START + 73) #define WID_CONDFRMT_REF(SC_DIALOGS_START + 163) diff --git a/sc/qa/uitest/calc_tests9/tdf142763.py b/sc/qa/uitest/calc_tests9/tdf142763.py new file mode 100644 index ..5808dd1df624 --- /dev/null +++ b/sc/qa/uitest/calc_tests9/tdf142763.py @@ -0,0 +1,69 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +from uitest.framework import UITestCase +from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file, select_pos +from libreoffice.uno.propertyvalue import mkPropertyValues +from libreoffice.calc.document import get_cell_by_position +import time + +class Tdf142763(UITestCase): + +def test_tdf142763_header(self): +with self.ui_test.create_doc_in_start_center("calc"): +xCalcDoc = self.xUITest.getTopFocusWindow() +gridwin = xCalcDoc.getChild("grid_window") +gridwin.executeAction("SELECT", mkPropertyValues({"CELL": "A1"})) +