accessibility/inc/standard/vclxaccessiblelist.hxx | 2 accessibility/source/standard/vclxaccessiblelist.cxx | 28 comphelper/source/misc/accessiblewrapper.cxx | 21 configure.ac | 23 connectivity/source/drivers/firebird/Connection.cxx | 89 connectivity/source/drivers/firebird/Connection.hxx | 14 connectivity/source/drivers/firebird/PreparedStatement.cxx | 3 connectivity/source/drivers/firebird/Statement.cxx | 5 cui/source/dialogs/SpellDialog.cxx | 2 cui/source/tabpages/chardlg.cxx | 5 dbaccess/source/ui/dlg/DbAdminImpl.cxx | 3 dev/null |binary dictionaries | 2 download.lst | 24 drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx | 10 editeng/source/accessibility/AccessibleStaticTextBase.cxx | 15 external/clucene/UnpackedTarball_clucene.mk | 1 external/clucene/patches/clucene-pure-virtual.patch | 11 external/curl/ExternalProject_curl.mk | 26 external/curl/UnpackedTarball_curl.mk | 12 external/curl/asan-poison-nsspem.patch.0 | 11 external/curl/curl-nss.patch.1 | 17 external/libtiff/ExternalProject_libtiff.mk | 8 external/libwpd/UnpackedTarball_libwpd.mk | 1 external/libwpd/tdf153034_3_WrongGreekCharactersWP5Import.patch | 18 external/libwps/README | 2 external/libwps/inc/pch/precompiled_wps.hxx | 3 external/libwps/libtool.patch.0 | 13 external/openssl/configurable-z-option.patch.0 | 14 external/poppler/StaticLibrary_poppler.mk | 6 external/poppler/disable-freetype.patch.1 | 2 external/poppler/poppler-config.patch.1 | 27 filter/source/msfilter/msdffimp.cxx | 13 filter/source/msfilter/svdfppt.cxx | 36 filter/source/pdf/pdfexport.cxx | 4 helpcompiler/source/HelpIndexer.cxx | 3 helpcontent2 | 2 hwpfilter/source/hbox.cxx | 2 include/comphelper/accessiblewrapper.hxx | 9 include/filter/msfilter/svdfppt.hxx | 3 include/oox/ppt/presentationfragmenthandler.hxx | 6 include/sfx2/AccessibilityIssue.hxx | 3 include/svtools/editbrowsebox.hxx | 2 include/svx/sidebar/AreaPropertyPanelBase.hxx | 6 include/vcl/EnumContext.hxx | 1 include/vcl/bitmap.hxx | 12 include/vcl/formatter.hxx | 6 include/vcl/pdfextoutdevdata.hxx | 8 include/xmloff/txtimp.hxx | 2 include/xmloff/xmlimp.hxx | 1 librelogo/source/LibreLogo/LibreLogo.py | 2 odk/settings/settings.mk | 2 officecfg/registry/data/org/openoffice/Office/Accelerators.xcu | 26 oox/qa/unit/data/tdf156902_GlowOnGroup.docx |binary oox/qa/unit/data/tdf157289_circularArrow_export.fodp | 816 ++ oox/qa/unit/export.cxx | 14 oox/qa/unit/shape.cxx | 12 oox/source/drawingml/shape.cxx | 3 oox/source/export/drawingml.cxx | 4 oox/source/ppt/presentationfragmenthandler.cxx | 150 readlicense_oo/license/CREDITS.fodt | 3266 +++++----- sc/CppunitTest_sc_a11y.mk | 1 sc/inc/document.hxx | 4 sc/qa/extras/accessibility/basics.cxx | 18 sc/qa/uitest/chart/chartAxes.py | 13 sc/source/core/data/column3.cxx | 2 sc/source/filter/xml/XMLExportIterator.cxx | 2 sc/source/ui/Accessibility/AccessibleCell.cxx | 9 sc/source/ui/Accessibility/AccessibleContextBase.cxx | 56 sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx | 10 sc/source/ui/attrdlg/attrdlg.cxx | 9 sc/source/ui/inc/AccessibleContextBase.hxx | 18 sc/source/ui/inc/AccessibleSpreadsheet.hxx | 3 sc/source/ui/view/formatsh.cxx | 2 sc/source/ui/view/gridwin.cxx | 15 sc/source/ui/view/tabvwshh.cxx | 2 sc/source/ui/view/viewfun3.cxx | 3 sd/qa/unit/data/ppt/tdf48083.ppt |binary sd/qa/unit/export-tests-ooxml2.cxx | 4 sd/qa/unit/import-tests2.cxx | 16 sd/source/ui/dlg/prltempl.cxx | 3 sfx2/source/sidebar/SidebarController.cxx | 7 solenv/flatpak-manifest.in | 4 solenv/gbuild/platform/macosx.mk | 2 svgio/qa/cppunit/SvgImportTest.cxx | 24 svgio/qa/cppunit/data/tdf97710.svg | 8 svgio/source/svgreader/svgstyleattributes.cxx | 3 svtools/source/config/accessibilityoptions.cxx | 3 svtools/source/config/miscopt.cxx | 86 svx/qa/unit/core.cxx | 2 svx/source/customshapes/EnhancedCustomShapeFontWork.cxx | 3 svx/source/fmcomp/gridcell.cxx | 14 svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 37 svx/source/sidebar/possize/PosSizePropertyPanel.cxx | 32 svx/source/sidebar/possize/PosSizePropertyPanel.hxx | 7 svx/source/styles/CommonStylePreviewRenderer.cxx | 16 svx/source/svdraw/svdpage.cxx | 4 sw/CppunitTest_sw_core_layout.mk | 2 sw/inc/EnhancedPDFExportHelper.hxx | 37 sw/inc/doc.hxx | 4 sw/inc/swtable.hxx | 8 sw/qa/core/layout/data/floattable-del-empty.docx |binary sw/qa/core/layout/data/floattable-in-inlinetable.docx |binary sw/qa/core/layout/data/floattable-in-inltbl-in-sect.docx |binary sw/qa/core/layout/data/floattable-move-master.docx |binary sw/qa/core/layout/data/floattable-nested-overlap.odt |binary sw/qa/core/layout/data/floattable-next-row-invalidate-pos.docx |binary sw/qa/core/layout/data/rtl-table.docx |binary sw/qa/core/layout/data/sorted-objs-insert.docx |binary sw/qa/core/layout/data/table-missing-join.docx |binary sw/qa/core/layout/flycnt.cxx | 103 sw/qa/core/layout/layact.cxx | 78 sw/qa/core/layout/paintfrm.cxx | 41 sw/qa/core/layout/sortedobjs.cxx | 35 sw/qa/core/layout/tabfrm.cxx | 65 sw/qa/core/text/data/floattable-anchor-height.docx |binary sw/qa/core/text/data/floattable-bad-fly-pos.docx |binary sw/qa/core/text/data/fly-minimal-wrap.docx |binary sw/qa/core/text/frmform.cxx | 30 sw/qa/core/text/itrform2.cxx | 30 sw/qa/core/text/porrst.cxx | 37 sw/qa/core/text/text.cxx | 4 sw/qa/extras/htmlexport/data/table_with_wide_horizontal_border.fodt | 27 sw/qa/extras/htmlexport/htmlexport.cxx | 11 sw/qa/extras/layout/data/tdf128966-2-min.odt |binary sw/qa/extras/layout/data/tdf155177-1-min.odt |binary sw/qa/extras/layout/layout3.cxx | 111 sw/qa/extras/ooxmlexport/data/floattable-nested-cell-start.odt |binary sw/qa/extras/ooxmlexport/data/floattable-nested.odt |binary sw/qa/extras/ooxmlexport/data/tdf157572_defaultVAnchor.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport10.cxx | 34 sw/qa/extras/ooxmlexport/ooxmlexport12.cxx | 4 sw/qa/extras/ooxmlexport/ooxmlexport18.cxx | 15 sw/qa/extras/ooxmlexport/ooxmlexport5.cxx | 11 sw/qa/extras/uiwriter/uiwriter6.cxx | 161 sw/qa/uibase/fldui/fldui.cxx | 24 sw/source/core/access/AccessibilityCheck.cxx | 26 sw/source/core/access/AccessibilityIssue.cxx | 54 sw/source/core/crsr/crsrsh.cxx | 6 sw/source/core/doc/DocumentContentOperationsManager.cxx | 34 sw/source/core/doc/tblrwcl.cxx | 14 sw/source/core/docnode/ndtbl.cxx | 8 sw/source/core/docnode/nodes.cxx | 7 sw/source/core/frmedt/feshview.cxx | 7 sw/source/core/frmedt/fetab.cxx | 10 sw/source/core/inc/AccessibilityIssue.hxx | 3 sw/source/core/inc/ftnfrm.hxx | 1 sw/source/core/inc/rootfrm.hxx | 1 sw/source/core/inc/tabfrm.hxx | 2 sw/source/core/inc/txtfrm.hxx | 2 sw/source/core/layout/atrfrm.cxx | 12 sw/source/core/layout/calcmove.cxx | 13 sw/source/core/layout/fly.cxx | 2 sw/source/core/layout/flycnt.cxx | 49 sw/source/core/layout/frmtool.cxx | 9 sw/source/core/layout/layact.cxx | 53 sw/source/core/layout/paintfrm.cxx | 4 sw/source/core/layout/sortedobjs.cxx | 6 sw/source/core/layout/tabfrm.cxx | 144 sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx | 30 sw/source/core/table/swnewtable.cxx | 20 sw/source/core/table/swtable.cxx | 2 sw/source/core/text/EnhancedPDFExportHelper.cxx | 355 - sw/source/core/text/frmform.cxx | 14 sw/source/core/text/itratr.cxx | 10 sw/source/core/text/itrform2.cxx | 23 sw/source/core/text/porrst.cxx | 26 sw/source/core/text/txtfrm.cxx | 23 sw/source/core/text/widorp.cxx | 44 sw/source/core/text/widorp.hxx | 6 sw/source/core/txtnode/OnlineAccessibilityCheck.cxx | 7 sw/source/core/txtnode/swfont.cxx | 20 sw/source/core/txtnode/txtedt.cxx | 13 sw/source/filter/html/htmltabw.cxx | 11 sw/source/filter/ww8/docxattributeoutput.cxx | 33 sw/source/filter/ww8/docxattributeoutput.hxx | 4 sw/source/ui/index/cnttab.cxx | 4 sw/source/uibase/dochdl/swdtflvr.cxx | 16 sw/source/uibase/fldui/fldmgr.cxx | 7 sw/source/uibase/utlui/content.cxx | 3 translations | 2 ucb/source/ucp/webdav-curl/CurlSession.cxx | 15 vcl/Library_vcl.mk | 1 vcl/headless/CairoCommon.cxx | 15 vcl/inc/quartz/cgutils.h | 4 vcl/osx/salinst.cxx | 8 vcl/qa/cppunit/pdfexport/data/nestedsection.fodt | 132 vcl/qa/cppunit/pdfexport/data/spanlist.fodt | 207 vcl/qa/cppunit/pdfexport/data/transparentshape.fodp | 439 + vcl/qa/cppunit/pdfexport/pdfexport.cxx | 612 + vcl/quartz/cgutils.mm | 43 vcl/skia/SkiaHelper.cxx | 23 vcl/skia/gdiimpl.cxx | 8 vcl/source/app/salvtables.cxx | 10 vcl/source/bitmap/bitmappaint.cxx | 75 vcl/source/filter/egif/egif.cxx | 6 vcl/source/gdi/pdfextoutdevdata.cxx | 17 vcl/source/gdi/pdfwriter_impl.cxx | 12 vcl/source/outdev/gradient.cxx | 36 vcl/source/treelist/transfer.cxx | 41 vcl/source/window/EnumContext.cxx | 5 vcl/source/window/mouse.cxx | 4 vcl/unx/generic/gdi/cairotextrender.cxx | 11 vcl/unx/gtk3/gtkframe.cxx | 3 vcl/unx/gtk3/gtkinst.cxx | 13 wizards/source/sfdocuments/SF_Base.xba | 2 writerfilter/CppunitTest_writerfilter_dmapper.mk | 1 writerfilter/qa/cppunittests/dmapper/DomainMapperTableHandler.cxx | 27 writerfilter/qa/cppunittests/dmapper/TableManager.cxx | 46 writerfilter/qa/cppunittests/dmapper/data/floattable-nested-cellstart.docx |binary writerfilter/qa/cppunittests/dmapper/data/floattable-nested.docx |binary writerfilter/qa/cppunittests/ooxml/data/floattable-leak.docx |binary writerfilter/qa/cppunittests/ooxml/ooxml.cxx | 21 writerfilter/source/dmapper/DomainMapper.cxx | 10 writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 15 writerfilter/source/dmapper/DomainMapperTableHandler.hxx | 2 writerfilter/source/dmapper/DomainMapper_Impl.cxx | 27 writerfilter/source/dmapper/DomainMapper_Impl.hxx | 3 writerfilter/source/dmapper/TableData.hxx | 29 writerfilter/source/dmapper/TableManager.cxx | 132 writerfilter/source/dmapper/TableManager.hxx | 5 writerfilter/source/ooxml/OOXMLFastContextHandler.cxx | 4 xmloff/source/core/xmlimp.cxx | 9 xmloff/source/text/txtimp.cxx | 65 224 files changed, 6808 insertions(+), 2616 deletions(-)
New commits: commit 2f05cbfeac4a7f2cd5ce7c3ec655cfed4ec7bdac Author: Thorsten Behrens <thorsten.behr...@allotropia.de> AuthorDate: Wed Oct 11 10:00:26 2023 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Wed Oct 11 13:56:57 2023 +0200 curl: upgrade to release 8.4.0 Fixes CVE-2023-38546 and CVE-2023-38545 Minor amount of bugfixes, nothing that immediately affects us. New feature: IPFS protocols via HTTP gateway now supported, with the right URL. Change-Id: I24af4d17b570685081aa031c50a87bb8dcf1833d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157811 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> Tested-by: Jenkins diff --git a/download.lst b/download.lst index 823d5351c1c4..f381cdf98eaa 100644 --- a/download.lst +++ b/download.lst @@ -75,8 +75,8 @@ CPPUNIT_TARBALL := cppunit-1.15.1.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -CURL_SHA256SUM := 376d627767d6c4f05105ab6d497b0d9aba7111770dd9d995225478209c37ea63 -CURL_TARBALL := curl-8.3.0.tar.xz +CURL_SHA256SUM := 16c62a9c4af0f703d28bda6d7bbf37ba47055ad3414d70dec63e2e6336f2a82d +CURL_TARBALL := curl-8.4.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts commit a9d17d9a7ede982c8762a0c04ff95ac4200fda89 Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Wed Oct 11 08:32:02 2023 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Wed Oct 11 13:38:53 2023 +0200 sw floattable, crashtesting: fix PDF export of ooo91654-1.doc Regression from 89a75cd194371002247d0138e759835bc673f7b0 (tdf#126449 sw floattable: DOC import: handle inner floating table, 2023-10-04), the document crashed Writer layout when exporting to PDF, which triggers a layout calculation. The trouble seems to be that in case the split fly is anchored in a table which is in a section, then we assume that we can create a section on the next page and move the follow fly frame there, which will mean the follow anchor won't be in a table anymore. Fix this by not moving the follow anchor explicitly, similar to what the nested floating table (inline or floating outer table) code does. The layout will later figure out that the available space is not enough, split the outer table for us, which will lead to a correct result. Note that the original bugdoc is DOC, but just saving it as-is in Word hides the problem, so it's not easy to minimize the reproducer. Instead create a similar DOCX reproducer from scratch. Change-Id: I769615af467ccaa88057ab322da2865f11d3d2ee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157803 Reviewed-by: Miklos Vajna <vmik...@collabora.com> Tested-by: Jenkins (cherry picked from commit 6b9378154f9b504b9e924fe4565df444786e7d73) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157782 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/qa/core/layout/data/floattable-in-inltbl-in-sect.docx b/sw/qa/core/layout/data/floattable-in-inltbl-in-sect.docx new file mode 100644 index 000000000000..ff329ecb5a5f Binary files /dev/null and b/sw/qa/core/layout/data/floattable-in-inltbl-in-sect.docx differ diff --git a/sw/qa/core/layout/flycnt.cxx b/sw/qa/core/layout/flycnt.cxx index 37b255945d9e..325b0078ecb0 100644 --- a/sw/qa/core/layout/flycnt.cxx +++ b/sw/qa/core/layout/flycnt.cxx @@ -1157,6 +1157,32 @@ CPPUNIT_TEST_FIXTURE(Test, testSplitFlyDelEmpty) // Then make sure that the page count matches Word: CPPUNIT_ASSERT_EQUAL(7, getPages()); } + +CPPUNIT_TEST_FIXTURE(Test, testSplitFlyInTableInSection) +{ + // Given a document where page 2 and page 3 has a floating table inside an inline table, inside + // a section: + // Without the accompanying fix in place, this test would have crashed, we created a follow + // anchor which was marked as "in table", but had no table parent. + createSwDoc("floattable-in-inltbl-in-sect.docx"); + + // Then make sure that the floating table is on page 2 and page 3: + SwDoc* pDoc = getSwDoc(); + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + auto pPage1 = pLayout->Lower()->DynCastPageFrame(); + CPPUNIT_ASSERT(pPage1); + CPPUNIT_ASSERT(!pPage1->GetSortedObjs()); + auto pPage2 = pPage1->GetNext()->DynCastPageFrame(); + CPPUNIT_ASSERT(pPage2); + CPPUNIT_ASSERT(pPage2->GetSortedObjs()); + SwSortedObjs& rPage2Objs = *pPage2->GetSortedObjs(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rPage2Objs.size()); + auto pPage3 = pPage2->GetNext()->DynCastPageFrame(); + CPPUNIT_ASSERT(pPage3); + CPPUNIT_ASSERT(pPage3->GetSortedObjs()); + SwSortedObjs& rPage3Objs = *pPage3->GetSortedObjs(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rPage3Objs.size()); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/layout/flycnt.cxx b/sw/source/core/layout/flycnt.cxx index faf991ddd9d2..09fd24f28c4a 100644 --- a/sw/source/core/layout/flycnt.cxx +++ b/sw/source/core/layout/flycnt.cxx @@ -1579,11 +1579,30 @@ SwLayoutFrame *SwFrame::GetNextFlyLeaf( MakePageType eMakePage ) SwLayoutFrame *pLayLeaf = nullptr; // Look up the first candidate. SwSectionFrame* pFlyAnchorSection = pFlyAnchor ? pFlyAnchor->FindSctFrame() : nullptr; + bool bNesting = false; if (pFlyAnchorSection) { - // We can't just move the split anchor to the next page, that would be outside the section. - // Rather split that section as well. - pLayLeaf = pFlyAnchorSection->GetNextSctLeaf(eMakePage); + // The anchor is in a section. + if (pFlyAnchor) + { + SwTabFrame* pFlyAnchorTab = pFlyAnchor->FindTabFrame(); + if (pFlyAnchorTab) + { + // The anchor is in table as well. + if (pFlyAnchorTab->FindSctFrame() == pFlyAnchorSection) + { + // We're in a table-in-section, no anchor move in this case, because that would + // mean we're not in a table anymore. + bNesting = true; + } + } + } + if (!bNesting) + { + // We can't just move the split anchor to the next page, that would be outside the section. + // Rather split that section as well. + pLayLeaf = pFlyAnchorSection->GetNextSctLeaf(eMakePage); + } } else if (IsTabFrame()) { @@ -1597,7 +1616,6 @@ SwLayoutFrame *SwFrame::GetNextFlyLeaf( MakePageType eMakePage ) } SwLayoutFrame* pOldLayLeaf = nullptr; - bool bNesting = false; while (true) { if (pLayLeaf) commit 9dc2c25d1b1b732ed1bb1416fcc36558e795a882 Author: Tomaž Vajngerl <qui...@gmail.com> AuthorDate: Wed Oct 11 11:59:16 2023 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Wed Oct 11 12:31:33 2023 +0200 Revert "tdf#51510 Blurry QR code after save/reload (docx)" This reverts commit a9dbc31fd3db37b2c6c5ca53ab712be76933b9ea. Reason for revert: This can cause compatibility issues with OOXML when they are saved like this because this is not the correct way how SVG should be saved to the OOXML document - it needs to use the OOXML SVG extension so that the image is still shown in old MSO versions. See more info in https://gerrit.libreoffice.org/c/core/+/157729. Change-Id: I32a5c1e10bacff03beacb9e825d3a243d5334983 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157785 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Tested-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index ad5a5cc42d4d..de7644ee4c54 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1446,10 +1446,6 @@ OUString GraphicExport::writeToStorage(const Graphic& rGraphic , bool bRelPathTo sMediaType = "image/png"; pExtension = ".png"; break; - case GfxLinkType::NativeSvg: - sMediaType = "image/svg"; - pExtension = ".svg"; - break; case GfxLinkType::NativeTif: sMediaType = "image/tiff"; pExtension = ".tif"; commit a9dbc31fd3db37b2c6c5ca53ab712be76933b9ea Author: Darshan-upadhyay1110 <darshan.upadh...@collabora.com> AuthorDate: Tue Sep 26 12:29:15 2023 +0530 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Wed Oct 11 11:39:15 2023 +0200 tdf#51510 Blurry QR code after save/reload (docx) - without GfxLinkType::NativeSvg CASE in writeToStorage method by default QR svg changes to low resolution image type and that is the why QR got blurry in doc or docx format - added svg option when we change from odt to doc or docx format Change-Id: I74aec0619992c1f455cc9cbf3c19e352c3037e04 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157264 Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> Tested-by: Szymon Kłos <szymon.k...@collabora.com> (cherry picked from commit 1d7dc53f19d188ae12603ca3cd526eb0a5016cf4) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157729 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> (cherry picked from commit 60a51b8397154e9685e63cff0a60c1a3da034423) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157776 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index de7644ee4c54..ad5a5cc42d4d 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1446,6 +1446,10 @@ OUString GraphicExport::writeToStorage(const Graphic& rGraphic , bool bRelPathTo sMediaType = "image/png"; pExtension = ".png"; break; + case GfxLinkType::NativeSvg: + sMediaType = "image/svg"; + pExtension = ".svg"; + break; case GfxLinkType::NativeTif: sMediaType = "image/tiff"; pExtension = ".tif"; commit b651051fce541ef5f8375154889922488189a4be Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Tue Oct 10 15:59:04 2023 +0300 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Wed Oct 11 11:19:00 2023 +0200 tdf#133870: read OBJECTDESCRIPTOR from clipboard This extends commit 8ad0c29f56e5069a3679560d404b603332dcf38a (sw: prefer ODF over RTF when pasting from Writer, 2020-04-22). To see that the clipboard contains a matching EMBED_SOURCE from another instance of the program, the content of OBJECTDESCRIPTOR needs to be read into mxObjDesc of TransferableDataHelper. Change-Id: Ic4bf4ba8b077550336be231451cf2e86c42f112b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157791 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> (cherry picked from commit 3191b322b59cab22ec4c67c0d83520ff577f7ae8) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157779 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/vcl/source/treelist/transfer.cxx b/vcl/source/treelist/transfer.cxx index 1fd9df908854..002a6b7dd338 100644 --- a/vcl/source/treelist/transfer.cxx +++ b/vcl/source/treelist/transfer.cxx @@ -41,6 +41,7 @@ #include <vcl/window.hxx> #include <comphelper/fileformat.h> #include <comphelper/processfactory.hxx> +#include <comphelper/scopeguard.hxx> #include <comphelper/servicehelper.hxx> #include <comphelper/sequence.hxx> #include <sot/filelist.hxx> @@ -108,6 +109,43 @@ SvStream& WriteTransferableObjectDescriptor( SvStream& rOStm, const Transferable return rOStm; } +static void TryReadTransferableObjectDescriptor(SvStream& rIStm, + TransferableObjectDescriptor& rObjDesc) +{ + auto nStartPos = rIStm.Tell(); + comphelper::ScopeGuard streamPosRestore([nStartPos, &rIStm] { rIStm.Seek(nStartPos); }); + + sal_uInt32 size; + rIStm.ReadUInt32(size); + + SvGlobalName className; + rIStm >> className; + + sal_uInt32 viewAspect; + rIStm.ReadUInt32(viewAspect); + + sal_Int32 width, height; + rIStm.ReadInt32(width).ReadInt32(height); + + sal_Int32 dragStartPosX, dragStartPosY; + rIStm.ReadInt32(dragStartPosX).ReadInt32(dragStartPosY); + + const OUString typeName = rIStm.ReadUniOrByteString(osl_getThreadTextEncoding()); + const OUString displayName = rIStm.ReadUniOrByteString(osl_getThreadTextEncoding()); + + sal_uInt32 nSig1, nSig2; + rIStm.ReadUInt32(nSig1).ReadUInt32(nSig2); + + if (!rIStm.good() || rIStm.Tell() - nStartPos != size || nSig1 != TOD_SIG1 || nSig2 != TOD_SIG2) + return; + + rObjDesc.maClassName = className; + rObjDesc.mnViewAspect = viewAspect; + rObjDesc.maSize = Size(width, height); + rObjDesc.maDragStartPos = Point(dragStartPosX, dragStartPosY); + rObjDesc.maTypeName = typeName; + rObjDesc.maDisplayName = displayName; +} // the reading of the parameter is done using the special service css::datatransfer::MimeContentType, // a similar approach should be implemented for creation of the mimetype string; @@ -1278,6 +1316,9 @@ void TransferableDataHelper::InitFormats() if( SotClipboardFormatId::OBJECTDESCRIPTOR == format.mnSotId ) { ImplSetParameterString(*mxObjDesc, format); + auto data = GetSequence(format, {}); + SvMemoryStream aSrcStm(data.getArray(), data.getLength(), StreamMode::READ); + TryReadTransferableObjectDescriptor(aSrcStm, *mxObjDesc); break; } } commit f3c084853331a9552821c369349398f964c73ab6 Author: László Németh <nem...@numbertext.org> AuthorDate: Tue Oct 10 15:49:38 2023 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Wed Oct 11 10:52:21 2023 +0200 tdf#157442 sw: fix spell checking of words next to digits If the preceding or subsequent word was a number or a word with numbers, misspelled words were accepted as correct. Note: it occurred with disabled "Check words with numbers" (default setting in Options – Language Settings – Writing Aids). Regression from commit 5619fc438273cd15e78539e78b8af751bca24b1a "tdf#154499 sw spell checking: add 2-word phrase checking". Change-Id: I4478c89d04ebf971925d4bdd56aaebc7ce8fb77e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157799 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> (cherry picked from commit 4df899de2ac51e684e83ab95dd25fc752ce2e92e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157775 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 1e9082201f7a..71ee1fd93a24 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -29,6 +29,7 @@ #include <editeng/fontitem.hxx> #include <editeng/hangulhanja.hxx> #include <i18nutil/transliteration.hxx> +#include <linguistic/misc.hxx> #include <SwSmartTagMgr.hxx> #include <o3tl/safeint.hxx> #include <osl/diagnose.h> @@ -1077,9 +1078,11 @@ bool SwTextNode::Spell(SwSpellArgs* pArgs) const OUString& rActualWord = aScanner.GetPrevWord(); bCalledNextWord = true; // check space separated word pairs in the dictionary, e.g. "vice versa" - if ( !((bNextWord && pArgs->xSpeller->isValid( rActualWord + " " + aScanner.GetWord(), + if ( !((bNextWord && !linguistic::HasDigits(aScanner.GetWord()) && + pArgs->xSpeller->isValid( rActualWord + " " + aScanner.GetWord(), static_cast<sal_uInt16>(eActLang), Sequence< PropertyValue >() )) || - ( !sPrevWord.isEmpty() && pArgs->xSpeller->isValid( sPrevWord + " " + rActualWord, + ( !sPrevWord.isEmpty() && !linguistic::HasDigits(sPrevWord) && + pArgs->xSpeller->isValid( sPrevWord + " " + rActualWord, static_cast<sal_uInt16>(eActLang), Sequence< PropertyValue >() ))) ) { // make sure the selection build later from the data @@ -1395,9 +1398,11 @@ SwRect SwTextFrame::AutoSpell_(SwTextNode & rNode, sal_Int32 nActPos) bNextWord = aScanner.NextWord(); bCalledNextWord = true; // check space separated word pairs in the dictionary, e.g. "vice versa" - if ( !((bNextWord && xSpell->isValid( aScanner.GetPrevWord() + " " + aScanner.GetWord(), + if ( !((bNextWord && !linguistic::HasDigits(aScanner.GetWord()) && + xSpell->isValid( aScanner.GetPrevWord() + " " + aScanner.GetWord(), static_cast<sal_uInt16>(eActLang), Sequence< PropertyValue >() )) || - (!sPrevWord.isEmpty() && xSpell->isValid( sPrevWord + " " + aScanner.GetPrevWord(), + (!sPrevWord.isEmpty() && !linguistic::HasDigits(sPrevWord) && + xSpell->isValid( sPrevWord + " " + aScanner.GetPrevWord(), static_cast<sal_uInt16>(eActLang), Sequence< PropertyValue >() ))) ) { sal_Int32 nSmartTagStt = nBegin; commit cb3ae5bb64f30552da1d5ff2bd9e58f8ede85f8b Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Tue Oct 10 16:29:16 2023 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Wed Oct 11 10:48:48 2023 +0200 tdf#154142 null-deref in SfxUndoManager::SetMaxUndoActionCount Change-Id: I09cfbccb5f2ffa009a3e40157c9373b7e10864dc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157772 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx index c1b36c2fbd53..cb52e99c5b4c 100644 --- a/sc/source/ui/view/formatsh.cxx +++ b/sc/source/ui/view/formatsh.cxx @@ -134,7 +134,7 @@ ScFormatShell::ScFormatShell(ScViewData& rData) : SetPool( &pTabViewShell->GetPool() ); SfxUndoManager* pMgr = rViewData.GetSfxDocShell()->GetUndoManager(); SetUndoManager( pMgr ); - if ( !rViewData.GetDocument().IsUndoEnabled() ) + if (pMgr && !rViewData.GetDocument().IsUndoEnabled()) { pMgr->SetMaxUndoActionCount( 0 ); } commit 2865050bf82c717ea403bf7635bf4072b1876f41 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Tue Oct 10 12:15:37 2023 +0200 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Tue Oct 10 21:32:39 2023 +0200 tdf#157182 vcl,filter: PDF/A export: fix crash due to SE ID mismatch The SE IDs in PDFExtOutDevData and PDFWriterImpl are supposed to match. If PDF/A-1 is exported then RemoveTransparenciesFromMetaFile() is called and that does unspeakable things to the Metafile and then we just throw away the PDF related data for the page in PDFExtOutDevData::ResetSyncData(). This means that then EnsureStructureElement are called on PDFExtOutDevData but not on PDFWriterImpl, so on the next page the IDs will no longer match, which is noticed if there is no transparency to be removed on that page. pdfextoutdevdata.cxx:347: bool vcl::PageSyncData::PlaySyncPageAct(): Assertion `id == -1 || id == mParaInts.front()' failed. Guess the easiest way to deal with this is to have the premature ResetSyncData() replay only the EnsureStructureElement actions, which is only possible because they don't really require any extra data stored in the ridiculous vectors in PageSyncData; PDFWriterImpl will eventually remove the elements as they are never initialised. (regression from commit 07d790ca473cd6e71f0343419b819fa6b485dc01) Change-Id: I8eb295504067edff00608e28fd86b0c86d547083 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157748 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit c50bca0fc298973bbeda697072528e3dfc887ac5) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157771 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx index 1d3d9185b7a4..ad269b1bf4c4 100644 --- a/filter/source/pdf/pdfexport.cxx +++ b/filter/source/pdf/pdfexport.cxx @@ -1174,7 +1174,7 @@ void PDFExport::ImplExportPage( vcl::PDFWriter& rWriter, vcl::PDFExtOutDevData& // Throw them all away in the absence of a way to reposition them to new positions of // their replacements. if (aCtx.m_bTransparenciesWereRemoved) - rPDFExtOutDevData.ResetSyncData(); + rPDFExtOutDevData.ResetSyncData(&rWriter); } else { @@ -1190,7 +1190,7 @@ void PDFExport::ImplExportPage( vcl::PDFWriter& rWriter, vcl::PDFExtOutDevData& rWriter.PlayMetafile( aMtf, aCtx, &rPDFExtOutDevData ); - rPDFExtOutDevData.ResetSyncData(); + rPDFExtOutDevData.ResetSyncData(nullptr); if (!msWatermark.isEmpty()) { diff --git a/include/vcl/pdfextoutdevdata.hxx b/include/vcl/pdfextoutdevdata.hxx index 3afec3bd934e..9c860944023c 100644 --- a/include/vcl/pdfextoutdevdata.hxx +++ b/include/vcl/pdfextoutdevdata.hxx @@ -105,7 +105,7 @@ public: virtual ~PDFExtOutDevData() override; bool PlaySyncPageAct( PDFWriter& rWriter, sal_uInt32& rCurGDIMtfAction, const GDIMetaFile& rMtf ); - void ResetSyncData(); + void ResetSyncData(PDFWriter * pWriterIfRemoveTransparencies); void PlayGlobalActions( PDFWriter& rWriter ); diff --git a/vcl/qa/cppunit/pdfexport/data/transparentshape.fodp b/vcl/qa/cppunit/pdfexport/data/transparentshape.fodp new file mode 100644 index 000000000000..2fddc3ac0db4 --- /dev/null +++ b/vcl/qa/cppunit/pdfexport/data/transparentshape.fodp @@ -0,0 +1,439 @@ +<?xml version='1.0' encoding='UTF-8'?> +<office:document xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:css3t="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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://ope noffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext: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:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:x mlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.presentation"> + <office:meta><meta:creation-date>2023-10-10T13:14:06.573003910</meta:creation-date><dc:date>2023-10-10T13:16:02.094663208</dc:date><meta:editing-duration>PT1M57S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:object-count="27"/><meta:generator>LibreOfficeDev/24.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/1aa3fb5816925ce1bc28aa17a26b8d8c2f2036f5</meta:generator></office:meta> + <office:font-face-decls> + <style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Lohit Devanagari" svg:font-family="'Lohit Devanagari'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Noto Sans CJK SC" svg:font-family="'Noto Sans CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Noto Sans1" svg:font-family="'Noto Sans'" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="graphic"> + <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:punctuation-wrap="simple" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="24pt" fo:language="de" fo:country="DE" style:font-name-asian="DejaVu Sans" style:font-size-asian="24pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Noto Sans1" style:font-size-complex="24pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:style style:name="standard" style:family="graphic"> + <style:graphic-properties draw:stroke="solid" svg:stroke-width="0cm" svg:stroke-color="#3465a4" draw:marker-start-width="0.2cm" draw:marker-start-center="false" draw:marker-end-width="0.2cm" draw:marker-end-center="false" draw:fill="solid" draw:fill-color="#729fcf" draw:textarea-horizontal-align="justify" fo:padding-top="0.125cm" fo:padding-bottom="0.125cm" fo:padding-left="0.25cm" fo:padding-right="0.25cm" fo:wrap-option="wrap" draw:shadow="hidden" draw:shadow-offset-x="0.2cm" draw:shadow-offset-y="0.2cm" draw:shadow-color="#808080"> + <text:list-style style:name="standard"> + <text:list-level-style-bullet text:level="1" text:bullet-char="●"> + <style:list-level-properties text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="2" text:bullet-char="●"> + <style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="3" text:bullet-char="●"> + <style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="4" text:bullet-char="●"> + <style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="5" text:bullet-char="●"> + <style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="6" text:bullet-char="●"> + <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="7" text:bullet-char="●"> + <style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="8" text:bullet-char="●"> + <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="9" text:bullet-char="●"> + <style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="10" text:bullet-char="●"> + <style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + </text:list-style> + </style:graphic-properties> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:line-height="100%" fo:text-indent="0cm"/> + <style:text-properties fo:font-variant="normal" fo:text-transform="none" style:use-window-font-color="true" loext:opacity="0%" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:letter-kerning="true" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="'Noto Sans CJK SC'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Lohit Devanagari" style:font-family-complex="'Lohit Devanagari'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="18pt" style:font-style-complex="norm al" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/> + </style:style> + <style:style style:name="Default-backgroundobjects" style:family="presentation"> + <style:graphic-properties draw:textarea-horizontal-align="justify" draw:shadow="hidden" draw:shadow-offset-x="0.2cm" draw:shadow-offset-y="0.2cm" draw:shadow-color="#808080"/> + <style:text-properties style:letter-kerning="true"/> + </style:style> + <style:style style:name="Default-notes" style:family="presentation"> + <style:graphic-properties draw:stroke="none" draw:fill="none"/> + <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/> + <style:text-properties fo:font-variant="normal" fo:text-transform="none" style:use-window-font-color="true" loext:opacity="0%" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="20pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:letter-kerning="true" fo:background-color="transparent" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="'Noto Sans CJK SC'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="20pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Lohit Devanagari" style:font-family-complex="'Lohit Devanagari'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="20 pt" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/> + </style:style> + <style:style style:name="Default-outline1" style:family="presentation"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:auto-grow-height="false" draw:fit-to-size="false" style:shrink-to-fit="true"> + <text:list-style style:name="Default-outline1"> + <text:list-level-style-bullet text:level="1" text:bullet-char="●"> + <style:list-level-properties text:space-before="0.3cm" text:min-label-width="0.9cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="2" text:bullet-char="–"> + <style:list-level-properties text:space-before="1.5cm" text:min-label-width="0.9cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="75%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="3" text:bullet-char="●"> + <style:list-level-properties text:space-before="2.8cm" text:min-label-width="0.8cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="4" text:bullet-char="–"> + <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="75%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="5" text:bullet-char="●"> + <style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="6" text:bullet-char="●"> + <style:list-level-properties text:space-before="6.6cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="7" text:bullet-char="●"> + <style:list-level-properties text:space-before="7.8cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="8" text:bullet-char="●"> + <style:list-level-properties text:space-before="9cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="9" text:bullet-char="●"> + <style:list-level-properties text:space-before="10.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="10" text:bullet-char="●"> + <style:list-level-properties text:space-before="11.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + </text:list-style> + </style:graphic-properties> + <style:paragraph-properties fo:margin-top="0.5cm" fo:margin-bottom="0cm"/> + <style:text-properties fo:font-variant="normal" fo:text-transform="none" style:use-window-font-color="true" loext:opacity="0%" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="32pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:letter-kerning="true" fo:background-color="transparent" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="'Noto Sans CJK SC'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="32pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Lohit Devanagari" style:font-family-complex="'Lohit Devanagari'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="32 pt" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/> + </style:style> + <style:style style:name="Default-title" style:family="presentation"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-vertical-align="middle"> + <text:list-style style:name="Default-title"> + <text:list-level-style-bullet text:level="1" text:bullet-char="●"> + <style:list-level-properties text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="2" text:bullet-char="●"> + <style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="3" text:bullet-char="●"> + <style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="4" text:bullet-char="●"> + <style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="5" text:bullet-char="●"> + <style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="6" text:bullet-char="●"> + <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="7" text:bullet-char="●"> + <style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="8" text:bullet-char="●"> + <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="9" text:bullet-char="●"> + <style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="10" text:bullet-char="●"> + <style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + </text:list-style> + </style:graphic-properties> + <style:paragraph-properties fo:text-align="center"/> + <style:text-properties fo:font-variant="normal" fo:text-transform="none" style:use-window-font-color="true" loext:opacity="0%" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="44pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:letter-kerning="true" fo:background-color="transparent" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="'Noto Sans CJK SC'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="44pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Lohit Devanagari" style:font-family-complex="'Lohit Devanagari'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="44 pt" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/> + </style:style> + <style:presentation-page-layout style:name="AL0T26"> + <presentation:placeholder presentation:object="handout" svg:x="2.058cm" svg:y="1.743cm" svg:width="10.556cm" svg:height="-0.231cm"/> + <presentation:placeholder presentation:object="handout" svg:x="15.414cm" svg:y="1.743cm" svg:width="10.556cm" svg:height="-0.231cm"/> + <presentation:placeholder presentation:object="handout" svg:x="2.058cm" svg:y="3.612cm" svg:width="10.556cm" svg:height="-0.231cm"/> + <presentation:placeholder presentation:object="handout" svg:x="15.414cm" svg:y="3.612cm" svg:width="10.556cm" svg:height="-0.231cm"/> + <presentation:placeholder presentation:object="handout" svg:x="2.058cm" svg:y="5.481cm" svg:width="10.556cm" svg:height="-0.231cm"/> + <presentation:placeholder presentation:object="handout" svg:x="15.414cm" svg:y="5.481cm" svg:width="10.556cm" svg:height="-0.231cm"/> + </style:presentation-page-layout> + <style:presentation-page-layout style:name="AL1T0"> + <presentation:placeholder presentation:object="title" svg:x="2.058cm" svg:y="1.743cm" svg:width="23.912cm" svg:height="3.507cm"/> + <presentation:placeholder presentation:object="subtitle" svg:x="2.058cm" svg:y="5.838cm" svg:width="23.912cm" svg:height="13.23cm"/> + </style:presentation-page-layout> + <style:presentation-page-layout style:name="AL2T1"> + <presentation:placeholder presentation:object="title" svg:x="2.058cm" svg:y="1.743cm" svg:width="23.912cm" svg:height="3.507cm"/> + <presentation:placeholder presentation:object="outline" svg:x="2.058cm" svg:y="5.838cm" svg:width="23.912cm" svg:height="13.23cm"/> + </style:presentation-page-layout> + </office:styles> + <office:automatic-styles> + <style:page-layout style:name="PM0"> + <style:page-layout-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:page-width="21cm" fo:page-height="29.7cm" style:print-orientation="portrait"/> + </style:page-layout> + <style:page-layout style:name="PM1"> + <style:page-layout-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:page-width="28cm" fo:page-height="15.75cm" style:print-orientation="landscape"/> + </style:page-layout> + <style:style style:name="dp1" style:family="drawing-page"> + <style:drawing-page-properties draw:background-size="border" draw:fill="none"/> + </style:style> + <style:style style:name="dp2" style:family="drawing-page"> + <style:drawing-page-properties presentation:display-header="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/> + </style:style> + <style:style style:name="dp3" style:family="drawing-page"> + <style:drawing-page-properties presentation:background-visible="true" presentation:background-objects-visible="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/> + </style:style> + <style:style style:name="gr1" style:family="graphic" style:parent-style-name="standard"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:fill-color="#ffffff" draw:auto-grow-height="false" fo:min-height="1.485cm" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="gr2" style:family="graphic" style:parent-style-name="standard"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:fill-color="#ffffff" draw:textarea-vertical-align="bottom" draw:auto-grow-height="false" fo:min-height="1.485cm" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="gr3" style:family="graphic" style:parent-style-name="standard"> + <style:graphic-properties draw:fill="solid" draw:fill-color="#729fcf" draw:opacity="50%" draw:textarea-horizontal-align="justify" draw:textarea-vertical-align="middle" draw:auto-grow-height="false" fo:min-height="3.75cm" fo:min-width="12cm" draw:shadow-opacity="50%" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="gr4" style:family="graphic"> + <style:graphic-properties style:protect="size" loext:decorative="false"/> + </style:style> + <style:style style:name="pr1" style:family="presentation" style:parent-style-name="Default-backgroundobjects"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:fill-color="#ffffff" draw:auto-grow-height="false" fo:min-height="1.086cm" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="pr2" style:family="presentation" style:parent-style-name="Default-backgroundobjects"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:fill-color="#ffffff" draw:auto-grow-height="false" fo:min-height="1.485cm" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="pr3" style:family="presentation" style:parent-style-name="Default-backgroundobjects"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:fill-color="#ffffff" draw:textarea-vertical-align="bottom" draw:auto-grow-height="false" fo:min-height="1.485cm" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="pr4" style:family="presentation" style:parent-style-name="Default-notes"> + <style:graphic-properties draw:fill-color="#ffffff" fo:min-height="13.364cm" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="pr5" style:family="presentation" style:parent-style-name="Default-outline1"> + <style:graphic-properties fo:min-height="8.884cm" loext:decorative="false"/> + <style:paragraph-properties style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="P1" style:family="paragraph"> + <style:text-properties fo:font-size="14pt" style:font-size-asian="14pt" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="P2" style:family="paragraph"> + <loext:graphic-properties draw:fill="none" draw:fill-color="#ffffff"/> + <style:text-properties fo:font-size="14pt" style:font-size-asian="14pt" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="P3" style:family="paragraph"> + <style:paragraph-properties fo:text-align="end"/> + <style:text-properties fo:font-size="14pt" style:font-size-asian="14pt" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="P4" style:family="paragraph"> + <loext:graphic-properties draw:fill="none" draw:fill-color="#ffffff"/> + <style:paragraph-properties fo:text-align="end"/> + <style:text-properties fo:font-size="14pt" style:font-size-asian="14pt" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="P5" style:family="paragraph"> + <style:paragraph-properties fo:text-align="center"/> + <style:text-properties fo:font-size="14pt" style:font-size-asian="14pt" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="P6" style:family="paragraph"> + <loext:graphic-properties draw:fill="none" draw:fill-color="#ffffff"/> + <style:paragraph-properties fo:text-align="center"/> + <style:text-properties fo:font-size="14pt" style:font-size-asian="14pt" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="P7" style:family="paragraph"> + <style:paragraph-properties fo:text-align="center"/> + </style:style> + <style:style style:name="P8" style:family="paragraph"> + <loext:graphic-properties draw:fill="solid" draw:fill-color="#729fcf" draw:opacity="50%"/> + <style:paragraph-properties fo:text-align="center"/> + </style:style> + <style:style style:name="P9" style:family="paragraph"> + <loext:graphic-properties draw:fill-color="#ffffff"/> + </style:style> + <text:list-style style:name="L3"> + <text:list-level-style-bullet text:level="1" text:bullet-char="●"> + <style:list-level-properties text:space-before="0.3cm" text:min-label-width="0.9cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="2" text:bullet-char="–"> + <style:list-level-properties text:space-before="1.5cm" text:min-label-width="0.9cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="75%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="3" text:bullet-char="●"> + <style:list-level-properties text:space-before="2.8cm" text:min-label-width="0.8cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="4" text:bullet-char="–"> + <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="75%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="5" text:bullet-char="●"> + <style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="6" text:bullet-char="●"> + <style:list-level-properties text:space-before="6.6cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="7" text:bullet-char="●"> + <style:list-level-properties text:space-before="7.8cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="8" text:bullet-char="●"> + <style:list-level-properties text:space-before="9cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="9" text:bullet-char="●"> + <style:list-level-properties text:space-before="10.2cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="10" text:bullet-char="●"> + <style:list-level-properties text:space-before="11.4cm" text:min-label-width="0.6cm"/> + <style:text-properties fo:font-family="OpenSymbol" style:use-window-font-color="true" fo:font-size="45%"/> + </text:list-level-style-bullet> + </text:list-style> + </office:automatic-styles> + <office:master-styles> + <draw:layer-set> + <draw:layer draw:name="layout"/> + <draw:layer draw:name="background"/> + <draw:layer draw:name="backgroundobjects"/> + <draw:layer draw:name="controls"/> + <draw:layer draw:name="measurelines"/> + </draw:layer-set> + <style:handout-master presentation:presentation-page-layout-name="AL0T26" style:page-layout-name="PM0" draw:style-name="dp2"> + <draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.999cm" svg:height="5.061cm" svg:x="1cm" svg:y="3.742cm"/> + <draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.999cm" svg:height="5.061cm" svg:x="1cm" svg:y="12.318cm"/> + <draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.999cm" svg:height="5.061cm" svg:x="1cm" svg:y="20.894cm"/> + <draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.999cm" svg:height="5.061cm" svg:x="11cm" svg:y="3.742cm"/> + <draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.999cm" svg:height="5.061cm" svg:x="11cm" svg:y="12.318cm"/> + <draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.999cm" svg:height="5.061cm" svg:x="11cm" svg:y="20.894cm"/> + <draw:frame draw:style-name="gr1" draw:text-style-name="P2" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="0cm" svg:y="0cm" presentation:class="header"> + <draw:text-box> + <text:p text:style-name="P1"><presentation:header/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame draw:style-name="gr1" draw:text-style-name="P4" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="11.886cm" svg:y="0cm" presentation:class="date-time"> + <draw:text-box> + <text:p text:style-name="P3"><presentation:date-time/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame draw:style-name="gr2" draw:text-style-name="P2" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="0cm" svg:y="28.215cm" presentation:class="footer"> + <draw:text-box> + <text:p text:style-name="P1"><presentation:footer/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame draw:style-name="gr2" draw:text-style-name="P4" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="11.886cm" svg:y="28.215cm" presentation:class="page-number"> + <draw:text-box> + <text:p text:style-name="P3"><text:page-number><number></text:page-number></text:p> + </draw:text-box> + </draw:frame> + </style:handout-master> + <style:master-page style:name="Default" style:page-layout-name="PM1" draw:style-name="dp1"> + <draw:frame presentation:style-name="Default-title" draw:layer="backgroundobjects" svg:width="25.199cm" svg:height="2.629cm" svg:x="1.4cm" svg:y="0.628cm" presentation:class="title" presentation:placeholder="true"> + <draw:text-box/> + </draw:frame> + <draw:frame presentation:style-name="Default-outline1" draw:layer="backgroundobjects" svg:width="25.199cm" svg:height="9.134cm" svg:x="1.4cm" svg:y="3.685cm" presentation:class="outline" presentation:placeholder="true"> + <draw:text-box/> + </draw:frame> + <draw:frame presentation:style-name="pr1" draw:text-style-name="P2" draw:layer="backgroundobjects" svg:width="6.523cm" svg:height="1.085cm" svg:x="1.4cm" svg:y="14.348cm" presentation:class="date-time"> + <draw:text-box> + <text:p text:style-name="P1"><presentation:date-time/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame presentation:style-name="pr1" draw:text-style-name="P6" draw:layer="backgroundobjects" svg:width="8.875cm" svg:height="1.085cm" svg:x="9.576cm" svg:y="14.348cm" presentation:class="footer"> + <draw:text-box> + <text:p text:style-name="P5"><presentation:footer/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame presentation:style-name="pr1" draw:text-style-name="P4" draw:layer="backgroundobjects" svg:width="6.523cm" svg:height="1.085cm" svg:x="20.076cm" svg:y="14.348cm" presentation:class="page-number"> + <draw:text-box> + <text:p text:style-name="P3"><text:page-number><number></text:page-number></text:p> + </draw:text-box> + </draw:frame> + <presentation:notes style:page-layout-name="PM0"> + <draw:page-thumbnail presentation:style-name="Default-title" draw:layer="backgroundobjects" svg:width="19.798cm" svg:height="11.136cm" svg:x="0.6cm" svg:y="2.257cm" presentation:class="page"/> + <draw:frame presentation:style-name="Default-notes" draw:layer="backgroundobjects" svg:width="16.799cm" svg:height="13.364cm" svg:x="2.1cm" svg:y="14.107cm" presentation:class="notes" presentation:placeholder="true"> + <draw:text-box/> + </draw:frame> + <draw:frame presentation:style-name="pr2" draw:text-style-name="P2" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="0cm" svg:y="0cm" presentation:class="header"> + <draw:text-box> + <text:p text:style-name="P1"><presentation:header/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame presentation:style-name="pr2" draw:text-style-name="P4" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="11.886cm" svg:y="0cm" presentation:class="date-time"> + <draw:text-box> + <text:p text:style-name="P3"><presentation:date-time/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame presentation:style-name="pr3" draw:text-style-name="P2" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="0cm" svg:y="28.215cm" presentation:class="footer"> + <draw:text-box> + <text:p text:style-name="P1"><presentation:footer/></text:p> + </draw:text-box> + </draw:frame> + <draw:frame presentation:style-name="pr3" draw:text-style-name="P4" draw:layer="backgroundobjects" svg:width="9.113cm" svg:height="1.484cm" svg:x="11.886cm" svg:y="28.215cm" presentation:class="page-number"> + <draw:text-box> + <text:p text:style-name="P3"><text:page-number><number></text:page-number></text:p> + </draw:text-box> + </draw:frame> + </presentation:notes> + </style:master-page> + </office:master-styles> + <office:body> + <office:presentation> + <draw:page draw:name="page1" draw:style-name="dp3" draw:master-page-name="Default" presentation:presentation-page-layout-name="AL1T0"> + <draw:custom-shape draw:style-name="gr3" draw:text-style-name="P8" draw:layer="layout" svg:width="12.5cm" svg:height="4cm" svg:x="7.5cm" svg:y="3.257cm"> + <text:p text:style-name="P7">Transparent shape</text:p> + <draw:enhanced-geometry svg:viewBox="0 0 21600 21600" draw:type="rectangle" draw:enhanced-path="M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N"/> + </draw:custom-shape> + <presentation:notes draw:style-name="dp2"> + <draw:page-thumbnail draw:style-name="gr4" draw:layer="layout" svg:width="19.798cm" svg:height="11.136cm" svg:x="0.6cm" svg:y="2.257cm" draw:page-number="1" presentation:class="page"/> + <draw:frame presentation:style-name="pr4" draw:text-style-name="P9" draw:layer="layout" svg:width="16.799cm" svg:height="13.364cm" svg:x="2.1cm" svg:y="14.107cm" presentation:class="notes" presentation:placeholder="true"> + <draw:text-box/> + </draw:frame> + </presentation:notes> + </draw:page> + <draw:page draw:name="page2" draw:style-name="dp3" draw:master-page-name="Default" presentation:presentation-page-layout-name="AL2T1"> + <draw:frame presentation:style-name="pr5" draw:layer="layout" svg:width="25.199cm" svg:height="9.134cm" svg:x="1.4cm" svg:y="3.685cm" presentation:class="outline" presentation:user-transformed="true"> + <draw:text-box> + <text:list text:style-name="L3"> + <text:list-item> + <text:p>Nothing transparent here</text:p> + </text:list-item> + </text:list> + </draw:text-box> + </draw:frame> + <presentation:notes draw:style-name="dp2"> + <draw:page-thumbnail draw:style-name="gr4" draw:layer="layout" svg:width="19.798cm" svg:height="11.136cm" svg:x="0.6cm" svg:y="2.257cm" draw:page-number="2" presentation:class="page"/> + <draw:frame presentation:style-name="pr4" draw:text-style-name="P9" draw:layer="layout" svg:width="16.799cm" svg:height="13.364cm" svg:x="2.1cm" svg:y="14.107cm" presentation:class="notes" presentation:placeholder="true"> + <draw:text-box/> + </draw:frame> + </presentation:notes> + </draw:page> + <presentation:settings presentation:mouse-visible="false"/> + </office:presentation> + </office:body> +</office:document> \ No newline at end of file diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index 9c05cf5a20c5..717e2cfec388 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -4155,6 +4155,22 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testSpans) CPPUNIT_ASSERT_EQUAL(static_cast<decltype(nDoc)>(1), nDoc); } +CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157182) +{ + aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export"); + + uno::Sequence<beans::PropertyValue> aFilterData(comphelper::InitPropertySequence({ + { "PDFUACompliance", uno::Any(true) }, + // only happens with PDF/A-1 + { "SelectPdfVersion", uno::Any(static_cast<sal_Int32>(1)) }, + })); + aMediaDescriptor["FilterData"] <<= aFilterData; + + saveAsPDF(u"transparentshape.fodp"); + + // just check this does not crash or assert +} + CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf57423) { aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export"); diff --git a/vcl/source/gdi/pdfextoutdevdata.cxx b/vcl/source/gdi/pdfextoutdevdata.cxx index 459075a1bbca..40440d576b6e 100644 --- a/vcl/source/gdi/pdfextoutdevdata.cxx +++ b/vcl/source/gdi/pdfextoutdevdata.cxx @@ -649,8 +649,20 @@ void PDFExtOutDevData::SetIsExportNamedDestinations( const bool bExportNDests ) { mbExportNDests = bExportNDests; } -void PDFExtOutDevData::ResetSyncData() +void PDFExtOutDevData::ResetSyncData(PDFWriter *const pWriter) { + if (pWriter != nullptr) + { + // tdf#157182 HACK: all PDF actions on this page will be deleted; to have + // matching SE IDs on the *next* page, replay EnsureStructureElement actions + for (auto const& rAction : mpPageSyncData->mActions) + { + if (rAction.eAct == PDFExtOutDevDataSync::EnsureStructureElement) + { + pWriter->EnsureStructureElement(); + } + } + } *mpPageSyncData = PageSyncData( mpGlobalSyncData.get() ); } bool PDFExtOutDevData::PlaySyncPageAct( PDFWriter& rWriter, sal_uInt32& rIdx, const GDIMetaFile& rMtf ) commit f3ff9c42de8e37fef48e841eeff9732ef01bd460 Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Tue Oct 10 08:23:14 2023 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Oct 10 11:02:01 2023 +0200 tdf#157571 sw floattable: fix incorrect blank space after table-in-shape Regression from a4af5432753408c4eea8a8d56c2f48202160c5fe (tdf#120262 sw floattable, legacy: fix text wrap around fly when no content fits, 2023-07-17), the bugdoc has a shape which contains a table, and lots of empty paragraphs next to it wrap around the shape. Writer didn't wrap these empty paragraphs, so some of the page 1 content was shifted to page 2. What happened here is that in case there is a really small space for the wrapping text around a floating object, then Word has some minimal limit. If the available horizontal space is smaller than the limit, we don't even try to wrap, even if the content (an empty paragraph) would fit. It was assumed that this limit is the shape for normal anchored objects and floating tables, but the two bugdocs show that there are two different limits here. Fix the problem by going back to MINLAY as the default limit where we start wrapping, and only increase that to TEXT_MIN_SMALL when wrapping around floating tables. That fixes the bugdoc and keeps the older floating table use-case working as well. This also allows reverting changes to testParaUpperMarginFlyIntersect, to assert the non-floating-table case again. Change-Id: I8f8a776c6ad5bdfa0ee4f197b600463fef6431f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157743 Reviewed-by: Miklos Vajna <vmik...@collabora.com> Tested-by: Jenkins (cherry picked from commit 4a5fb05d5e2448453477ce14862a8cf9846ecb49) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157717 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/qa/core/text/data/fly-minimal-wrap.docx b/sw/qa/core/text/data/fly-minimal-wrap.docx new file mode 100644 index 000000000000..f5955d29d0ed Binary files /dev/null and b/sw/qa/core/text/data/fly-minimal-wrap.docx differ diff --git a/sw/qa/core/text/itrform2.cxx b/sw/qa/core/text/itrform2.cxx index e190bed46f33..637396a01c2e 100644 --- a/sw/qa/core/text/itrform2.cxx +++ b/sw/qa/core/text/itrform2.cxx @@ -82,6 +82,36 @@ CPPUNIT_TEST_FIXTURE(Test, testFloattableLegacyWrapEmptyParagraph) const SwSortedObjs& rPageObjs2 = *pPage2->GetSortedObjs(); CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rPageObjs2.size()); } + +CPPUNIT_TEST_FIXTURE(Test, testFlyMinimalWrap) +{ + // Given a document with a first page that has a shape and a table in it (not floating table), + // some empty paragraphs wrapping around the shape: + createSwDoc("fly-minimal-wrap.docx"); + + // When calculating the layout: + calcLayout(); + + // Then make sure the wrap happens, so the 2nd page only has 2 paragraphs: + SwDoc* pDoc = getSwDoc(); + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + auto pPage = dynamic_cast<SwPageFrame*>(pLayout->Lower()); + CPPUNIT_ASSERT(pPage); + CPPUNIT_ASSERT(pPage->GetSortedObjs()); + const SwSortedObjs& rPageObjs = *pPage->GetSortedObjs(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rPageObjs.size()); + auto pPage2 = dynamic_cast<SwPageFrame*>(pPage->GetNext()); + CPPUNIT_ASSERT(pPage2); + CPPUNIT_ASSERT(!pPage2->GetSortedObjs()); + SwLayoutFrame* pBody2 = pPage2->FindBodyCont(); + SwFrame* pPage2Para1 = pBody2->GetLower(); + CPPUNIT_ASSERT(pPage2Para1); + SwFrame* pPage2Para2 = pPage2Para1->GetNext(); + CPPUNIT_ASSERT(pPage2Para2); + // Without the accompanying fix in place, this test would have failed, the second page had 19 + // text frames in the body frame, not 2. + CPPUNIT_ASSERT(!pPage2Para2->GetNext()); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx index eec7292b6b68..790f2f32415f 100644 --- a/sw/qa/core/text/text.cxx +++ b/sw/qa/core/text/text.cxx @@ -1286,10 +1286,10 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testParaUpperMarginFlyIntersect) nHeight += getXPath(pXmlDoc, xPath, "height").toInt32(); } // Without the accompanying fix in place, this test would have failed with: - // - Expected: 542 (~500) + // - Expected: 521 (~500) // - Actual : 857 (~1000) // I.e. both upper and lower margin was taken into account. - CPPUNIT_ASSERT_EQUAL(542, nHeight); + CPPUNIT_ASSERT_EQUAL(521, nHeight); } CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testTdf129810) diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx index 10a7671279da..3aaab7a9f258 100644 --- a/sw/source/core/text/itrform2.cxx +++ b/sw/source/core/text/itrform2.cxx @@ -2806,8 +2806,27 @@ void SwTextFormatter::CalcFlyWidth( SwTextFormatInfo &rInf ) { // Word style: if there is minimal space remaining, then handle that similar to a full line // and put the actual empty paragraph below the fly. - bFullLine = std::abs(aLine.Left() - aInter.Left()) < TEXT_MIN_SMALL - && std::abs(aLine.Right() - aInter.Right()) < TEXT_MIN_SMALL; + SwTwips nLimit = MINLAY; + for (const auto& pObj : *rTextFly.GetAnchoredObjList()) + { + auto pFlyFrame = pObj->DynCastFlyFrame(); + if (!pFlyFrame) + { + continue; + } + + if (!pFlyFrame->IsFlySplitAllowed()) + { + continue; + } + + // We wrap around a floating table, that has a larger minimal wrap distance. + nLimit = TEXT_MIN_SMALL; + break; + } + + bFullLine = std::abs(aLine.Left() - aInter.Left()) < nLimit + && std::abs(aLine.Right() - aInter.Right()) < nLimit; } // Although no text is left, we need to format another line, commit c425fda98a10a2eaa759a27fe4663fdb8b5526a7 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Mon Oct 2 20:33:42 2023 +0200 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Tue Oct 10 10:31:36 2023 +0200 vcl,drawinglayer,sw: PDF/UA export: footnote-container-in-list problem The problem is that if there is a footnote in a list, the footnote container becomes a child of the LI element that contains the footnote anchor, which is of course nonsense. This is because SwTaggedPDFHelper::CheckReopenTag() stopped using SetCurrentStructureElement(), but unfortunately it's required so that once the list ends, the correct parent element is restored for whatever follows the list. There is a similar problem in VclMetafileProcessor2D. (regression from commit d467f1aa3d028f399826c97e2eecedcd79efcf65) Change-Id: I03dee5dc2e11accb97279e5f325808c5b85507a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157501 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit a8f522f4257729ea11178ebf165fdd3a2b7be240) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157536 Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx index e529dbe13c1c..a5882e8b95cb 100644 --- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx @@ -2525,7 +2525,7 @@ void VclMetafileProcessor2D::processStructureTagPrimitive2D( // structured tag primitive const vcl::PDFWriter::StructElement& rTagElement(rStructureTagCandidate.getStructureElement()); bool bTagUsed((vcl::PDFWriter::NonStructElement != rTagElement)); - bool bNeedEndAnchor(false); + ::std::optional<sal_Int32> oAnchorParent; if (!rStructureTagCandidate.isTaggedSdrObject()) { @@ -2541,8 +2541,8 @@ void VclMetafileProcessor2D::processStructureTagPrimitive2D( { sal_Int32 const id = mpPDFExtOutDevData->EnsureStructureElement( rStructureTagCandidate.GetAnchorStructureElementKey()); - mpPDFExtOutDevData->BeginStructureElement(id); - bNeedEndAnchor = true; + oAnchorParent.emplace(mpPDFExtOutDevData->GetCurrentStructureElement()); + mpPDFExtOutDevData->SetCurrentStructureElement(id); } mpPDFExtOutDevData->WrapBeginStructureElement(rTagElement); switch (rTagElement) @@ -2618,9 +2618,9 @@ void VclMetafileProcessor2D::processStructureTagPrimitive2D( { // write end tag mpPDFExtOutDevData->EndStructureElement(); - if (bNeedEndAnchor) + if (oAnchorParent) { - mpPDFExtOutDevData->EndStructureElement(); + mpPDFExtOutDevData->SetCurrentStructureElement(*oAnchorParent); } } } diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx index 3103b3fe9ef8..9ebc233dc687 100644 --- a/sw/source/core/text/EnhancedPDFExportHelper.cxx +++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx @@ -458,7 +458,15 @@ bool SwTaggedPDFHelper::CheckReopenTag() if (pReopenKey) { - OpenTagImpl(pReopenKey); + // note: it would be possible to get rid of the SetCurrentStructureElement() + // - which is quite ugly - for most cases by recreating the parents until the + // current ancestor, but there are special cases cell frame rowspan > 1 follow + // and footnote frame follow where the parent of the follow is different from + // the parent of the first one, and so in PDFExtOutDevData the wrong parent + // would be restored and used for next elements. + m_nRestoreCurrentTag = mpPDFExtOutDevData->GetCurrentStructureElement(); + sal_Int32 const id = mpPDFExtOutDevData->EnsureStructureElement(pReopenKey); + mpPDFExtOutDevData->SetCurrentStructureElement(id); bRet = true; } diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index 47bd983dea84..9c05cf5a20c5 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -3733,7 +3733,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testSpans) CPPUNIT_ASSERT(pKids1); // assume there are no MCID ref at this level auto vKids1 = pKids1->GetElements(); - CPPUNIT_ASSERT_EQUAL(size_t(1), vKids1.size()); + CPPUNIT_ASSERT_EQUAL(size_t(2), vKids1.size()); auto pRefKid10 = dynamic_cast<vcl::filter::PDFReferenceElement*>(vKids1[0]); CPPUNIT_ASSERT(pRefKid10); auto pObject10 = pRefKid10->LookupObject(); @@ -3868,8 +3868,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testSpans) CPPUNIT_ASSERT(pKids1011); // assume there are no MCID ref at this level auto vKids1011 = pKids1011->GetElements(); - //CPPUNIT_ASSERT_EQUAL(size_t(1), vKids1011.size()); - //FIXME Div ??? + CPPUNIT_ASSERT_EQUAL(size_t(1), vKids1011.size()); auto pRefKid10110 = dynamic_cast<vcl::filter::PDFReferenceElement*>(vKids1011[0]); CPPUNIT_ASSERT(pRefKid10110); @@ -4077,6 +4076,78 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testSpans) pDictA103101->LookupElement("TextDecorationType")) ->GetValue()); + // now the footnote container - following the list + auto pRefKid11 = dynamic_cast<vcl::filter::PDFReferenceElement*>(vKids1[1]); + CPPUNIT_ASSERT(pRefKid11); + auto pObject11 = pRefKid11->LookupObject(); + CPPUNIT_ASSERT(pObject11); + auto pType11 + = dynamic_cast<vcl::filter::PDFNameElement*>(pObject11->Lookup("Type")); + CPPUNIT_ASSERT_EQUAL(OString("StructElem"), pType11->GetValue()); + auto pS11 = dynamic_cast<vcl::filter::PDFNameElement*>(pObject11->Lookup("S")); + CPPUNIT_ASSERT_EQUAL(OString("Div"), pS11->GetValue()); + + auto pKids11 = dynamic_cast<vcl::filter::PDFArrayElement*>(pObject11->Lookup("K")); + CPPUNIT_ASSERT(pKids11); + // assume there are no MCID ref at this level + auto vKids11 = pKids11->GetElements(); + CPPUNIT_ASSERT_EQUAL(size_t(1), vKids11.size()); + + auto pRefKid110 = dynamic_cast<vcl::filter::PDFReferenceElement*>(vKids11[0]); + CPPUNIT_ASSERT(pRefKid110); + auto pObject110 = pRefKid110->LookupObject(); + CPPUNIT_ASSERT(pObject110); + auto pType110 + = dynamic_cast<vcl::filter::PDFNameElement*>(pObject110->Lookup("Type")); + CPPUNIT_ASSERT_EQUAL(OString("StructElem"), pType110->GetValue()); + auto pS110 = dynamic_cast<vcl::filter::PDFNameElement*>(pObject110->Lookup("S")); + CPPUNIT_ASSERT_EQUAL(OString("Note"), pS110->GetValue()); + + auto pKids110 + = dynamic_cast<vcl::filter::PDFArrayElement*>(pObject110->Lookup("K")); + CPPUNIT_ASSERT(pKids110); + // assume there are no MCID ref at this level + auto vKids110 = pKids110->GetElements(); + CPPUNIT_ASSERT_EQUAL(size_t(2), vKids110.size()); + + auto pRefKid1100 = dynamic_cast<vcl::filter::PDFReferenceElement*>(vKids110[0]); + CPPUNIT_ASSERT(pRefKid1100); + auto pObject1100 = pRefKid1100->LookupObject(); + CPPUNIT_ASSERT(pObject1100); + auto pType1100 + = dynamic_cast<vcl::filter::PDFNameElement*>(pObject1100->Lookup("Type")); + CPPUNIT_ASSERT_EQUAL(OString("StructElem"), pType1100->GetValue()); + auto pS1100 = dynamic_cast<vcl::filter::PDFNameElement*>(pObject1100->Lookup("S")); + CPPUNIT_ASSERT_EQUAL(OString("Lbl"), pS1100->GetValue()); + + auto pKids1100 + = dynamic_cast<vcl::filter::PDFArrayElement*>(pObject1100->Lookup("K")); + CPPUNIT_ASSERT(pKids1100); + // assume there are no MCID ref at this level + auto vKids1100 = pKids1100->GetElements(); + CPPUNIT_ASSERT_EQUAL(size_t(1), vKids1100.size()); + + auto pRefKid11000 = dynamic_cast<vcl::filter::PDFReferenceElement*>(vKids1100[0]); + CPPUNIT_ASSERT(pRefKid11000); + auto pObject11000 = pRefKid11000->LookupObject(); + CPPUNIT_ASSERT(pObject11000); + auto pType11000 + = dynamic_cast<vcl::filter::PDFNameElement*>(pObject11000->Lookup("Type")); + CPPUNIT_ASSERT_EQUAL(OString("StructElem"), pType11000->GetValue()); + auto pS11000 + = dynamic_cast<vcl::filter::PDFNameElement*>(pObject11000->Lookup("S")); + CPPUNIT_ASSERT_EQUAL(OString("Link"), pS11000->GetValue()); + + auto pRefKid1101 = dynamic_cast<vcl::filter::PDFReferenceElement*>(vKids110[1]); + CPPUNIT_ASSERT(pRefKid1101); + auto pObject1101 = pRefKid1101->LookupObject(); + CPPUNIT_ASSERT(pObject1101); + auto pType1101 + = dynamic_cast<vcl::filter::PDFNameElement*>(pObject1101->Lookup("Type")); + CPPUNIT_ASSERT_EQUAL(OString("StructElem"), pType1101->GetValue()); + auto pS1101 = dynamic_cast<vcl::filter::PDFNameElement*>(pObject1101->Lookup("S")); + CPPUNIT_ASSERT_EQUAL(OString("Footnote"), pS1101->GetValue()); + ++nDoc; } } diff --git a/vcl/source/gdi/pdfextoutdevdata.cxx b/vcl/source/gdi/pdfextoutdevdata.cxx index 057cb4e07549..459075a1bbca 100644 --- a/vcl/source/gdi/pdfextoutdevdata.cxx +++ b/vcl/source/gdi/pdfextoutdevdata.cxx @@ -830,6 +830,9 @@ void PDFExtOutDevData::InitStructureElement(sal_Int32 const id, mpPageSyncData->mParaInts.push_back(id); mpPageSyncData->mParaStructElements.push_back( eType ); mpPageSyncData->mParaOUStrings.push_back( rAlias ); + // update parent: required for hell fly anchor frames in sw, so that on the actual + // anchor frame EndStructureElement() resets mCurrentStructElement properly. + mpGlobalSyncData->mStructParents[id] = mpGlobalSyncData->mCurrentStructElement; } void PDFExtOutDevData::BeginStructureElement(sal_Int32 const id) commit 6b7f23f326b079e6b015b69e5690b40d0ad5817b Author: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> AuthorDate: Thu Sep 7 09:07:55 2023 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Oct 10 10:11:43 2023 +0200 tdf#48083 Handle mso_fillBackground directly when processing the shape And remove the no longer needed special handling in SdrPowerPointImport::ImportPage Follow-up to a43f1ac6c964181cbaa4c889409688197cbf7a2b Change-Id: I0382d5cf93f9e3dfba2b7822032e3eb3cf668a8c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156638 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> (cherry picked from commit 76932ec6c45089f3319c4fc211d92d19d92666c3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157714 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index a6503cc3ff6b..c1cd089ce974 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -1471,7 +1471,7 @@ void DffPropertyReader::ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, co } } } - else if (eXFill == drawing::FillStyle_BITMAP && bUseSlideBackground) + else if (eXFill == drawing::FillStyle_NONE && bUseSlideBackground) { rSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); XFillUseSlideBackgroundItem aFillBgItem(true); diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 32337d63393a..3847c12264a5 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -1295,13 +1295,6 @@ rtl::Reference<SdrObject> SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData maFidcls[ nSec ].dgid = rPersistEntry.nDrawingDgId; // insert the correct drawing id; } } - if ( GetPropertyValue( DFF_Prop_fNoFillHitTest, 0 ) & 0x10 ) - { - if (GetPropertyValue(DFF_Prop_fillType, mso_fillSolid) == mso_fillBackground) - { - rData.aBackgroundColoredObjects.push_back( pRet ); - } - } } return pRet; } @@ -2903,7 +2896,7 @@ void SdrPowerPointImport::ImportPage( SdrPage* pRet, const PptSlidePersistEntry* if ( pObj ) { if ( aProcessData.pTableRowProperties ) - pObj = CreateTable(pObj.get(), aProcessData.pTableRowProperties.get(), aProcessData.rPersistEntry.xSolverContainer.get(), aProcessData.aBackgroundColoredObjects); + pObj = CreateTable(pObj.get(), aProcessData.pTableRowProperties.get(), aProcessData.rPersistEntry.xSolverContainer.get()); pRet->NbcInsertObject( pObj.get() ); @@ -2925,23 +2918,6 @@ void SdrPowerPointImport::ImportPage( SdrPage* pRet, const PptSlidePersistEntry* break; } - // Handle shapes where the fill matches the background - // fill (mso_fillBackground). - if (rSlidePersist.ePageKind == PPT_SLIDEPAGE) - { - if (!aProcessData.aBackgroundColoredObjects.empty()) - { - for (auto const & pObject : aProcessData.aBackgroundColoredObjects) - { - SfxItemSet aNewSet(*pObject->GetMergedItemSet().GetPool()); - aNewSet.Put(XFillStyleItem(css::drawing::FillStyle_NONE)); - XFillUseSlideBackgroundItem aFillBgItem(true); - aNewSet.Put(aFillBgItem); - pObject->SetMergedItemSet(aNewSet); - } - } - } - if ( rSlidePersist.pBObj ) { // #i99386# transfer the attributes from the temporary BackgroundObject @@ -7500,8 +7476,7 @@ static void ApplyCellLineAttributes( const SdrObject* pLine, Reference< XTable > rtl::Reference<SdrObject> SdrPowerPointImport::CreateTable( SdrObject* pGroup, const sal_uInt32* pTableArry, - SvxMSDffSolverContainer* pSolverContainer, - std::vector<rtl::Reference<SdrObject>>& rBackgroundColoredObjects) + SvxMSDffSolverContainer* pSolverContainer) { rtl::Reference<SdrObject> pRet = pGroup; @@ -7655,8 +7630,6 @@ rtl::Reference<SdrObject> SdrPowerPointImport::CreateTable( { SdrObject* pPartObj = aIter.Next(); removeShapeId(pPartObj); - // ofz#41510 make sure rBackgroundColoredObjects doesn't contain deleted objects - std::replace(rBackgroundColoredObjects.begin(), rBackgroundColoredObjects.end(), pPartObj, pRet.get()); } } catch( const Exception& ) diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx index 0fad50bf993f..f32e38f89476 100644 --- a/include/filter/msfilter/svdfppt.hxx +++ b/include/filter/msfilter/svdfppt.hxx @@ -652,8 +652,7 @@ public: rtl::Reference<SdrObject> CreateTable( SdrObject* pGroupObject, const sal_uInt32* pTableArry, - SvxMSDffSolverContainer* pSolverContainer, - std::vector<rtl::Reference<SdrObject>>& rBackgroundColoredObjects + SvxMSDffSolverContainer* pSolverContainer ); virtual bool ReadFormControl( tools::SvRef<SotStorage>& rSrc1, css::uno::Reference< css::form::XFormComponent > & rFormComp ) const = 0; }; commit d1c50e62d7682df5893d17884c24dceacbbe9c8c Author: Thorsten Behrens <thorsten.behr...@allotropia.de> AuthorDate: Thu Oct 5 04:07:12 2023 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Oct 10 10:11:26 2023 +0200 related tdf#123983: don't open test file read/write from src tree Change-Id: I7f09a78076fa67447ead82ac7dc8556d840d5697 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157576 Tested-by: Thorsten Behrens <thorsten.behr...@allotropia.de> Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de> (cherry picked from commit ae533151bcc16de22fb90b42be1cf7432b0fddc3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157715 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/svx/qa/unit/core.cxx b/svx/qa/unit/core.cxx index 4735c6664b4f..0625d7ad70fb 100644 --- a/svx/qa/unit/core.cxx +++ b/svx/qa/unit/core.cxx @@ -62,7 +62,7 @@ CPPUNIT_TEST_FIXTURE(Test, testGraphicObjectResolver) OUString aURL = createFileURL(u"GraphicObjectResolverTest.zip"); uno::Reference<embed::XStorage> xStorage = comphelper::OStorageHelper::GetStorageOfFormatFromURL(ZIP_STORAGE_FORMAT_STRING, aURL, - embed::ElementModes::READWRITE); + embed::ElementModes::READ); CPPUNIT_ASSERT(xStorage.is()); rtl::Reference<SvXMLGraphicHelper> xGraphicHelper commit 4ec888913bd21c91cd7b7728cb323d0c5889f780 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Fri Oct 6 20:54:19 2023 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Oct 10 07:23:59 2023 +0200 fix ScTabViewShell::HasAccessibilityObjects been this way since it was introduced in commit 5cd1b592821d6870376f44aedfb527db07fd07d0 Author: Sascha Ballach <s...@openoffice.org> Date: Thu Feb 14 15:54:20 2002 +0000 #95584#; call Broadcaster for Accessibility objects Change-Id: I1a79807cbb529c72a46e0e77e2999ae3f5a143ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157664 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit 7d7a34635cd4d7e5d9c3ae123d5adfa071e85da0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157713 diff --git a/sc/source/ui/view/tabvwshh.cxx b/sc/source/ui/view/tabvwshh.cxx index ce38719bde67..d1263590a895 100644 --- a/sc/source/ui/view/tabvwshh.cxx +++ b/sc/source/ui/view/tabvwshh.cxx @@ -241,7 +241,7 @@ void ScTabViewShell::BroadcastAccessibility( const SfxHint &rHint ) bool ScTabViewShell::HasAccessibilityObjects() const { - return pAccessibilityBroadcaster != nullptr; + return pAccessibilityBroadcaster && pAccessibilityBroadcaster->HasListeners(); } bool ScTabViewShell::ExecuteRetypePassDlg(ScPasswordHash eDesiredHash) commit def6d74f37b2fce8e0f29fb967108dacefd78896 Author: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> AuthorDate: Mon Sep 4 11:52:08 2023 +0200 Commit: Adolfo Jayme Barrientos <fit...@ubuntu.com> CommitDate: Mon Oct 9 17:20:50 2023 +0200 tdf#151188 Select correct fill type in sidebar Change-Id: Ic123e6b21009cc57bf1c4b5f4edc6dcd277bae0a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156510 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> (cherry picked from commit b5effb66ee1563689c27ff10b682357120ab7786) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156534 Reviewed-by: Patrick Luby <plub...@neooffice.org> Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx index 128709704d3c..fdb5ca82a899 100644 --- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx @@ -1067,10 +1067,14 @@ void AreaPropertyPanelBase::updateFillUseBackground(bool bDisabled, bool bDefaul if (pState) { const XFillUseSlideBackgroundItem* pItem = static_cast<const XFillUseSlideBackgroundItem*>(pState); - // When XFillUseSlideBackgroundItem is true, select "Use Background Fill". When false, select "None" + // When XFillUseSlideBackgroundItem is set, select "Use Background Fill". + // When false, select "None" (only if "Use background fill" was selected beforehand) int nPos = pItem->GetValue() ? USE_BACKGROUND : NONE; - mxLbFillType->set_active(nPos); - FillStyleChanged(false); + if ((nPos == NONE && mxLbFillType->get_active() == USE_BACKGROUND) || nPos == USE_BACKGROUND) + { + mxLbFillType->set_active(nPos); + FillStyleChanged(false); + } } } } commit 550fae2a94c355356ba002294a1e3df1fcade48b Author: Andras Timar <andras.ti...@collabora.com> AuthorDate: Mon Oct 9 17:20:05 2023 +0200 Commit: Gerrit Code Review <ger...@gerrit.libreoffice.org> CommitDate: Mon Oct 9 17:20:05 2023 +0200 Update git submodules * Update dictionaries from branch 'libreoffice-7-6' to d23d4741599e60dec191ec7f5e6bfa54ac91a4c5 - Update Danish dictionaries (v2.8.001) Change-Id: I5345295565467b204a22a6b9d7b91d60dd00b149 Reviewed-on: https://gerrit.libreoffice.org/c/dictionaries/+/157453 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> Tested-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/dictionaries b/dictionaries index 9fc97adb6e81..d23d4741599e 160000 --- a/dictionaries +++ b/dictionaries @@ -1 +1 @@ -Subproject commit 9fc97adb6e81018a560527b8969b997dab4f48c1 +Subproject commit d23d4741599e60dec191ec7f5e6bfa54ac91a4c5 commit 11254d0af28464d04f6c980a0f8f3ce3ba0dd423 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Fri Oct 6 20:19:28 2023 +0300 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Mon Oct 9 16:03:34 2023 +0200 tdf#157643: Drop extra cellless rows, a "substitute" for bold borders Change-Id: Ic98bec72ed14623c880fad3b881d72ee13395a0c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157670 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157698 diff --git a/sw/qa/extras/htmlexport/data/table_with_wide_horizontal_border.fodt b/sw/qa/extras/htmlexport/data/table_with_wide_horizontal_border.fodt new file mode 100644 index 000000000000..a3c53a070784 --- /dev/null +++ b/sw/qa/extras/htmlexport/data/table_with_wide_horizontal_border.fodt @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/200 4/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns :css3t="http://www.w3.org/TR/css3-text/" xmlns:officeooo="http://openoffice.org/2009/office" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:automatic-styles> + <style:style style:name="Table1.A1" style:family="table-cell"> + <style:table-cell-properties fo:border-bottom="1.5pt solid"/> + </style:style> + </office:automatic-styles> + <office:body> + <office:text> + <table:table> + <table:table-column/> + <table:table-row> + <table:table-cell table:style-name="Table1.A1" office:value-type="string"> + <text:p>A1</text:p> + </table:table-cell> + </table:table-row> + <table:table-row> + <table:table-cell office:value-type="string"> + <text:p>A2</text:p> + </table:table-cell> + </table:table-row> + </table:table> + <text:p/> + </office:text> + </office:body> +</office:document> \ No newline at end of file diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx b/sw/qa/extras/htmlexport/htmlexport.cxx index b6f55cebcd3f..d5b94dcc28d3 100644 --- a/sw/qa/extras/htmlexport/htmlexport.cxx +++ b/sw/qa/extras/htmlexport/htmlexport.cxx @@ -2746,6 +2746,17 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testTdf156647_CellPaddingRoundtrip) } } +CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testTdf157643_WideHBorder) +{ + // Given a document with a table with a wide border between its two rows: + createSwDoc("table_with_wide_horizontal_border.fodt"); + // When exporting to reqif-xhtml: + ExportToReqif(); + // Make sure that there's no extra tr's: + xmlDocUniquePtr pXmlDoc = WrapReqifFromTempFile(); + assertXPath(pXmlDoc, "/reqif-xhtml:html/reqif-xhtml:div/reqif-xhtml:table/reqif-xhtml:tr", 2); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx index d7e5e107969d..8613f37b073d 100644 --- a/sw/source/filter/html/htmltabw.cxx +++ b/sw/source/filter/html/htmltabw.cxx @@ -863,17 +863,6 @@ void SwHTMLWrtTable::Write( SwHTMLWriter& rWrt, sal_Int16 eAlign, { --nSkipRows; } ... etc. - the rest is truncated