Makefile.fetch | 1 RepositoryExternal.mk | 33 basctl/source/basicide/macrodlg.cxx | 3 bin/oss-fuzz-setup.sh | 1 config_host.mk.in | 2 configure.ac | 26 connectivity/source/cpool/ZConnectionPool.cxx | 2 connectivity/source/drivers/evoab2/EApi.cxx | 1 cui/source/tabpages/measure.cxx | 5 distro-configs/LibreOfficeCoverity.conf | 1 distro-configs/LibreOfficeFlatpak.conf | 1 download.lst | 2 external/Module_external.mk | 1 external/cuckoo/Makefile | 7 external/cuckoo/Module_cuckoo.mk | 16 external/cuckoo/README | 3 external/cuckoo/UnpackedTarball_cuckoo.mk | 22 external/cuckoo/cuckoo-coverity.patch | 22 readlicense_oo/license/CREDITS.fodt | 4514 ++++++------- readlicense_oo/license/license.xml | 6 sal/osl/w32/tempfile.cxx | 2 sc/inc/columnspanset.hxx | 3 sc/source/core/data/columnspanset.cxx | 6 sc/source/core/data/drwlayer.cxx | 3 sc/source/ui/view/gridwin.cxx | 18 sd/source/ui/func/fuzoom.cxx | 12 sfx2/source/appl/newhelp.cxx | 6 sfx2/source/view/viewfrm.cxx | 44 solenv/flatpak-manifest.in | 7 starmath/inc/view.hxx | 6 starmath/source/view.cxx | 8 svgio/inc/svgstyleattributes.hxx | 3 svgio/qa/cppunit/SvgImportTest.cxx | 24 svgio/qa/cppunit/data/ClipRule.svg | 18 svgio/source/svgreader/svgstyleattributes.cxx | 44 svl/Library_svl.mk | 1 svl/source/misc/sharedstringpool.cxx | 161 svx/source/form/formcontroller.cxx | 2 svx/source/unodraw/SvxXTextColumns.cxx | 4 sw/qa/extras/odfexport/data/section-columns-separator.fodt | 24 sw/qa/extras/odfexport/odfexport.cxx | 6 sw/qa/extras/odfexport/odfexport2.cxx | 35 sw/qa/extras/ooxmlexport/ooxmlexport13.cxx | 4 sw/source/core/doc/DocumentRedlineManager.cxx | 7 sw/source/core/doc/doclay.cxx | 11 sw/source/core/doc/textboxhelper.cxx | 3 sw/source/core/layout/atrfrm.cxx | 4 sw/source/core/text/porlay.cxx | 4 sw/source/core/text/redlnitr.cxx | 2 sw/source/core/txtnode/modeltoviewhelper.cxx | 12 sw/source/core/unocore/unotext.cxx | 21 sw/source/filter/xml/xmlexp.hxx | 4 sw/source/filter/xml/xmlfmte.cxx | 12 sw/source/filter/xml/xmliteme.cxx | 2 sw/source/filter/xml/xmltble.cxx | 157 sw/source/filter/xml/xmltexte.hxx | 12 sw/source/uibase/app/docstyle.cxx | 18 ucb/source/ucp/webdav-curl/CurlSession.cxx | 11 vcl/skia/skia_denylist_vulkan.xml | 5 vcl/unx/gtk3/gtkinst.cxx | 28 wizards/source/scriptforge/SF_PythonHelper.xba | 12 wizards/source/scriptforge/python/scriptforge.py | 9 writerfilter/source/dmapper/DomainMapper_Impl.cxx | 49 writerfilter/source/dmapper/GraphicImport.cxx | 11 xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx |binary xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx |binary xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt |binary xmloff/qa/unit/style.cxx | 191 xmloff/source/style/xmlexppr.cxx | 51 xmloff/source/text/XMLTextColumnsExport.cxx | 13 70 files changed, 3050 insertions(+), 2709 deletions(-)
New commits: commit dc94c82f67369219b69a0daa34c055eea28dfb5c Author: Mike Kaganski <[email protected]> AuthorDate: Wed Aug 24 10:49:47 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:19 2022 +0200 tdf#150577: Revert "Micro-optim in FormController::approveRowChange" This reverts commit e005ab5d40d358adb75a64e140d46f4bf605647d. XColumn::wasNull is documented [1] to require a previous call to a get* method. The reverted change internally queried the *previous* column's wasNull. [1] https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1sdb_1_1XColumn.html#a0d482c20564f9119052b1962f830190e Change-Id: I3e988358764fa6935e8eb3e66340a0869c157d02 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138550 Tested-by: Jenkins Reviewed-by: Mike Kaganski <[email protected]> (cherry picked from commit 59f30175bfc557aa7c752ab0b45af9d34215d4dc) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138822 Reviewed-by: Caolán McNamara <[email protected]> diff --git a/svx/source/form/formcontroller.cxx b/svx/source/form/formcontroller.cxx index 50e0d4f592d9..d5687a15ba03 100644 --- a/svx/source/form/formcontroller.cxx +++ b/svx/source/form/formcontroller.cxx @@ -3647,7 +3647,7 @@ sal_Bool SAL_CALL FormController::approveRowChange(const RowChangeEvent& _rEvent } // TODO: in case of binary fields, this "getString" below is extremely expensive - if ( !rColInfo.xColumn->wasNull() || !rColInfo.xColumn->getString().isEmpty() ) + if ( !rColInfo.xColumn->getString().isEmpty() || !rColInfo.xColumn->wasNull() ) continue; OUString sMessage( SvxResId( RID_ERR_FIELDREQUIRED ) ); commit dd816077a3dc8fa29590ed7b926012a96f25b6bf Author: Regina Henschel <[email protected]> AuthorDate: Sat Aug 20 20:56:11 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:18 2022 +0200 tdf#150407 do not use loext in save in ODF strict The 'bt-lr' attribute value of 'writing-mode' attribute and the 'page-content-bottom' and 'page-content-top' values of 'vertical-rel' attribute are not part of ODF 1.3. Therefore they need to be saved in 'loext' extended namespace. Error was, that this was done too, if the current ODF version is strict. That results in an invalid file in a productive build and a failed assert in SvXMLNamespaceMap::GetQNameByKey() in a debug build. Change-Id: Ie9ba99fdd02de21a2467b236409daa951933f011 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138595 Tested-by: Jenkins Reviewed-by: Regina Henschel <[email protected]> (cherry picked from commit 64be7052ba7e02e248412222098e07a5f4106456) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138541 Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit 34edaf8249107c4216fdaffe450d287a1908a0de) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138547 diff --git a/xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx b/xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx new file mode 100644 index 000000000000..0264f89f98a6 Binary files /dev/null and b/xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx differ diff --git a/xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx b/xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx new file mode 100644 index 000000000000..48f981506243 Binary files /dev/null and b/xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx differ diff --git a/xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt b/xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt new file mode 100644 index 000000000000..2ad2ca1219b2 Binary files /dev/null and b/xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt differ diff --git a/xmloff/qa/unit/style.cxx b/xmloff/qa/unit/style.cxx index 1f63cbe1355a..93634ad5170d 100644 --- a/xmloff/qa/unit/style.cxx +++ b/xmloff/qa/unit/style.cxx @@ -23,6 +23,9 @@ #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> #include <comphelper/propertysequence.hxx> +#include <officecfg/Office/Common.hxx> +#include <unotools/mediadescriptor.hxx> +#include <unotools/saveopt.hxx> #include <unotools/tempfile.hxx> #include <unotools/ucbstreamhelper.hxx> #include <rtl/character.hxx> @@ -45,6 +48,7 @@ public: void registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx) override; uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } void load(std::u16string_view rURL); + void save(const OUString& rFilterName, utl::TempFile& rTempFile); }; void XmloffStyleTest::setUp() @@ -73,6 +77,16 @@ void XmloffStyleTest::load(std::u16string_view rFileName) mxComponent = loadFromDesktop(aURL); } +void XmloffStyleTest::save(const OUString& rFilterName, utl::TempFile& rTempFile) +{ + uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); + utl::MediaDescriptor aMediaDescriptor; + aMediaDescriptor["FilterName"] <<= rFilterName; + rTempFile.EnableKillingFile(); + xStorable->storeToURL(rTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList()); + validate(rTempFile.GetFileName(), test::ODF); +} + CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testFillImageBase64) { // Load a flat ODG that has base64-encoded bitmap as a fill style. @@ -197,6 +211,183 @@ CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testRtlGutter) CPPUNIT_ASSERT(bRtlGutter); } +CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testWritingModeBTLR) +{ + // Load document. It has a frame style with writing-mode bt-lr. + // In ODF 1.3 extended it is written as loext:writing-mode="bt-lr". + // In ODF 1.3 strict, there must not be an attribute at all. + getComponent() = loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY) + + "tdf150407_WritingModeBTLR_style.odt", + "com.sun.star.text.TextDocument"); + + Resetter _([]() { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch); + return pBatch->commit(); + }); + + // Save to ODF 1.3 extended. Adapt 3 (=ODFVER_LATEST) to a to be ODFVER_013_EXTENDED when + // attribute value "bt-lr" is included in ODF strict. + { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch); + pBatch->commit(); + utl::TempFile aTempFile; + save("writer8", aTempFile); + + // With applied fix for tdf150407 still loext:writing-mode="bt-lr" has to be written. + std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, "styles.xml"); + xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + assertXPath(pXmlDoc, + "/office:document-styles/office:styles/style:style[@style:name='FrameBTLR']/" + "style:graphic-properties[@loext:writing-mode]"); + assertXPath(pXmlDoc, + "/office:document-styles/office:styles/style:style[@style:name='FrameBTLR']/" + "style:graphic-properties", + "writing-mode", "bt-lr"); + } + // Save to ODF 1.3 strict. + { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(10, pBatch); + pBatch->commit(); + utl::TempFile aTempFile; + save("writer8", aTempFile); + + // Without the fix an faulty 'writing-mode="bt-lr"' attribute was written in productive build. + // A debug build fails assertion in SvXMLNamespaceMap::GetQNameByKey(). + std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, "styles.xml"); + xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + assertXPathNoAttribute(pXmlDoc, + "/office:document-styles/office:styles/" + "style:style[@style:name='FrameBTLR']/style:graphic-properties", + "writing-mode"); + } +} + +CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testPosRelBottomMargin) +{ + // Load document. It has a frame position with vertical position relative to bottom margin. + // In ODF 1.3 extended it is written as loext:vertical-rel="page-content-bottom". + // In ODF 1.3 strict, there must not be an attribute at all. + getComponent() = loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY) + + "tdf150407_PosRelBottomMargin.docx", + "com.sun.star.text.TextDocument"); + + Resetter _([]() { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch); + return pBatch->commit(); + }); + + // Save to ODF 1.3 extended. Adapt 3 (=ODFVER_LATEST) to a to be ODFVER_013_EXTENDED when + // attribute value "page-content-bottom" is included in ODF strict. + { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch); + pBatch->commit(); + utl::TempFile aTempFile; + save("writer8", aTempFile); + + // With applied fix for tdf150407 still loext:vertical-rel="page-content-bottom" has to be + // written. + std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, "content.xml"); + xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + assertXPath( + pXmlDoc, + "/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/" + "style:graphic-properties[@loext:vertical-rel]"); + assertXPath( + pXmlDoc, + "/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/" + "style:graphic-properties", + "vertical-rel", "page-content-bottom"); + } + // Save to ODF 1.3 strict. + { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(10, pBatch); + pBatch->commit(); + utl::TempFile aTempFile; + save("writer8", aTempFile); + + // Without the fix an faulty 'vertical-rel="page-content-bottom"' attribute was written in + // productive build. A debug build fails assertion in SvXMLNamespaceMap::GetQNameByKey(). + std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, "content.xml"); + xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + assertXPathNoAttribute(pXmlDoc, + "/office:document-content/office:automatic-styles/" + "style:style[@style:name='gr1']/style:graphic-properties", + "vertical-rel"); + } +} + +CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testPosRelTopMargin) +{ + // Load document. It has a frame position with vertical position relative to top margin. + // In ODF 1.3 extended it is written as loext:vertical-rel="page-content-top". + // In ODF 1.3 strict, there must not be an attribute at all. + getComponent() = loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY) + + "tdf150407_PosRelTopMargin.docx", + "com.sun.star.text.TextDocument"); + + Resetter _([]() { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch); + return pBatch->commit(); + }); + + // Save to ODF 1.3 extended. Adapt 3 (=ODFVER_LATEST) to a to be ODFVER_013_EXTENDED when + // attribute value "page-content-top" is included in ODF strict. + { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch); + pBatch->commit(); + utl::TempFile aTempFile; + save("writer8", aTempFile); + + // With applied fix for tdf150407 still loext:vertical-rel="page-content-top has to be + // written. + std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, "content.xml"); + xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + assertXPath( + pXmlDoc, + "/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/" + "style:graphic-properties[@loext:vertical-rel]"); + assertXPath( + pXmlDoc, + "/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/" + "style:graphic-properties", + "vertical-rel", "page-content-top"); + } + // Save to ODF 1.3 strict. + { + std::shared_ptr<comphelper::ConfigurationChanges> pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Save::ODF::DefaultVersion::set(10, pBatch); + pBatch->commit(); + utl::TempFile aTempFile; + save("writer8", aTempFile); + + // Without the fix an faulty 'vertical-rel="page-content-top"' attribute was written in + // productive build. A debug build fails assertion in SvXMLNamespaceMap::GetQNameByKey(). + std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, "content.xml"); + xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + assertXPathNoAttribute(pXmlDoc, + "/office:document-content/office:automatic-styles/" + "style:style[@style:name='gr1']/style:graphic-properties", + "vertical-rel"); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/xmloff/source/style/xmlexppr.cxx b/xmloff/source/style/xmlexppr.cxx index f87f9ae1ece0..d81253238d3a 100644 --- a/xmloff/source/style/xmlexppr.cxx +++ b/xmloff/source/style/xmlexppr.cxx @@ -929,6 +929,24 @@ void SvXMLExportPropertyMapper::_exportXML( } } +namespace +{ +// -1 = Attribute needs extended namespace, but current ODF version is strict. +// 1 = Attribute needs extended namespace and current ODF version allows it. +// 0 = Attribute does not need extended namespace +sal_Int8 CheckExtendedNamespace(std::u16string_view sXMLAttributeName, std::u16string_view sValue, + const SvtSaveOptions::ODFSaneDefaultVersion nODFVersion) +{ + if (IsXMLToken(sXMLAttributeName, XML_WRITING_MODE) && IsXMLToken(sValue, XML_BT_LR)) + return nODFVersion & SvtSaveOptions::ODFSVER_EXTENDED ? 1 : -1; + else if (IsXMLToken(sXMLAttributeName, XML_VERTICAL_REL) + && (IsXMLToken(sValue, XML_PAGE_CONTENT_BOTTOM) + || IsXMLToken(sValue, XML_PAGE_CONTENT_TOP))) + return nODFVersion & SvtSaveOptions::ODFSVER_EXTENDED ? 1 : -1; + return 0; +} +} + void SvXMLExportPropertyMapper::_exportXML( SvXMLAttributeList& rAttrList, const XMLPropertyState& rProperty, @@ -1057,31 +1075,14 @@ void SvXMLExportPropertyMapper::_exportXML( // We don't seem to have a generic mechanism to write an attribute in the extension // namespace in case of certain attribute values only, so do this manually. - if (IsXMLToken(mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex), XML_WRITING_MODE)) - { - if (IsXMLToken(aValue, XML_BT_LR)) - { - sName = rNamespaceMap.GetQNameByKey( - XML_NAMESPACE_LO_EXT, - mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex)); - } - } - else if (IsXMLToken(mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex), XML_VERTICAL_REL)) - { - if (IsXMLToken(aValue, XML_PAGE_CONTENT_BOTTOM)) - { - sName = rNamespaceMap.GetQNameByKey( - XML_NAMESPACE_LO_EXT, - mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex)); - } - if (IsXMLToken(aValue, XML_PAGE_CONTENT_TOP)) - { - sName = rNamespaceMap.GetQNameByKey( - XML_NAMESPACE_LO_EXT, - mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex)); - } - } - + sal_Int8 nExtendedStatus + = CheckExtendedNamespace(mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex), + aValue, rUnitConverter.getSaneDefaultVersion()); + if (nExtendedStatus == -1) + return; + if (nExtendedStatus == 1) + sName = rNamespaceMap.GetQNameByKey( + XML_NAMESPACE_LO_EXT, mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex)); rAttrList.AddAttribute( sName, aValue ); } } commit 0cd9fe00e256d6ee76bcdf98630339c4e54da039 Author: Xisco Fauli <[email protected]> AuthorDate: Thu Jul 28 18:37:32 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:18 2022 +0200 svgio: Add support for clip-rule="evenodd" Change-Id: I028aa88bdd72b4f87526a3d1edabd612d7686571 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137577 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137586 (cherry picked from commit 2b22203c0be09e9685cf081f0a1fafa538a21294) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137973 Reviewed-by: Christian Lohmaier <[email protected]> diff --git a/svgio/inc/svgstyleattributes.hxx b/svgio/inc/svgstyleattributes.hxx index 8db2fa0676f6..dd5c16daab43 100644 --- a/svgio/inc/svgstyleattributes.hxx +++ b/svgio/inc/svgstyleattributes.hxx @@ -338,6 +338,9 @@ namespace svgio::svgreader /// fill rule content FillRule getFillRule() const; + /// clip rule content + FillRule getClipRule() const; + /// fill StrokeDasharray content const SvgNumberVector& getStrokeDasharray() const; diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx index f9fc88f812de..cc4aae90bd39 100644 --- a/svgio/qa/cppunit/SvgImportTest.cxx +++ b/svgio/qa/cppunit/SvgImportTest.cxx @@ -62,6 +62,7 @@ class Test : public test::BootstrapFixture, public XmlTestTools void testClipPathAndParentStyle(); void testClipPathAndStyle(); void testClipPathUsingClipPath(); + void testClipRule(); void testi125329(); void testMaskingPath07b(); void test123926(); @@ -103,6 +104,7 @@ public: CPPUNIT_TEST(testClipPathAndParentStyle); CPPUNIT_TEST(testClipPathAndStyle); CPPUNIT_TEST(testClipPathUsingClipPath); + CPPUNIT_TEST(testClipRule); CPPUNIT_TEST(testi125329); CPPUNIT_TEST(testMaskingPath07b); CPPUNIT_TEST(test123926); @@ -624,6 +626,28 @@ void Test::testClipPathUsingClipPath() assertXPath(pDocument, "/primitive2D/transform/mask/mask/polypolygon/polygon/point", 13); } +void Test::testClipRule() +{ + Primitive2DSequence aSequence = parseSvg(u"/svgio/qa/cppunit/data/ClipRule.svg"); + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(aSequence.getLength())); + + drawinglayer::Primitive2dXmlDump dumper; + xmlDocUniquePtr pDocument = dumper.dumpAndParse(comphelper::sequenceToContainer<Primitive2DContainer>(aSequence)); + + CPPUNIT_ASSERT (pDocument); + + // Without the place in place, this test would have failed with + // - Expected: 5 + // - Actual : 10 + assertXPath(pDocument, "/primitive2D/transform/mask[1]/polypolygon/polygon/point", 5); + assertXPath(pDocument, "/primitive2D/transform/mask[1]/polypolygoncolor", "color", "#0000ff"); + assertXPath(pDocument, "/primitive2D/transform/mask[1]/polypolygoncolor/polypolygon/polygon/point", 5); + + assertXPath(pDocument, "/primitive2D/transform/mask[2]/polypolygon/polygon/point", 5); + assertXPath(pDocument, "/primitive2D/transform/mask[2]/polypolygoncolor", "color", "#ff0000"); + assertXPath(pDocument, "/primitive2D/transform/mask[2]/polypolygoncolor/polypolygon/polygon/point", 5); +} + void Test::testi125329() { //Check style inherit from * css element diff --git a/svgio/qa/cppunit/data/ClipRule.svg b/svgio/qa/cppunit/data/ClipRule.svg new file mode 100644 index 000000000000..55f0cb9eee3a --- /dev/null +++ b/svgio/qa/cppunit/data/ClipRule.svg @@ -0,0 +1,18 @@ +<svg version="1.1" baseProfile="basic" id="svg-root" + width="100%" height="100%" viewBox="0 0 480 360" + xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Define star path --> + <defs> + <path d="M50,0 21,90 98,35 2,35 79,90z" id="star" /> + </defs> + <clipPath id="emptyStar"> + <use xlink:href="#star" clip-rule="evenodd" /> + </clipPath> + <rect clip-path="url(#emptyStar)" width="50" height="90" fill="blue" /> + + <clipPath id="filledStar"> + <use xlink:href="#star" clip-rule="evenodd" /> + </clipPath> + <rect clip-path="url(#filledStar)" width="50" height="90" x="50" fill="red" /> +</svg> + diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx index 8084ed5f0239..333ff7dbd317 100644 --- a/svgio/source/svgreader/svgstyleattributes.cxx +++ b/svgio/source/svgreader/svgstyleattributes.cxx @@ -1117,17 +1117,18 @@ namespace svgio::svgreader { // create fill basegfx::B2DPolyPolygon aPath(rPath); - const bool bNeedToCheckClipRule(SVGToken::Path == mrOwner.getType() || SVGToken::Polygon == mrOwner.getType()); - const bool bClipPathIsNonzero(bNeedToCheckClipRule && mbIsClipPathContent && FillRule::nonzero == maClipRule); - const bool bFillRuleIsNonzero(bNeedToCheckClipRule && !mbIsClipPathContent && FillRule::nonzero == getFillRule()); - if(bClipPathIsNonzero || bFillRuleIsNonzero) + if(SVGToken::Path == mrOwner.getType() || SVGToken::Polygon == mrOwner.getType()) { - if(getFill() || getSvgGradientNodeFill() || getSvgPatternNodeFill()) { - // nonzero is wanted, solve geometrically (see description on basegfx) - // basegfx::utils::createNonzeroConform() is expensive for huge paths - // and is only needed if path will be filled later on - aPath = basegfx::utils::createNonzeroConform(aPath); + if(FillRule::evenodd != getClipRule() && FillRule::evenodd != getFillRule()) + { + if(getFill() || getSvgGradientNodeFill() || getSvgPatternNodeFill()) + { + // nonzero is wanted, solve geometrically (see description on basegfx) + // basegfx::utils::createNonzeroConform() is expensive for huge paths + // and is only needed if path will be filled later on + aPath = basegfx::utils::createNonzeroConform(aPath); + } } } @@ -1267,10 +1268,10 @@ namespace svgio::svgreader mpMarkerMidXLink(nullptr), mpMarkerEndXLink(nullptr), maFillRule(FillRule::notset), - maClipRule(FillRule::nonzero), + maClipRule(FillRule::notset), maBaselineShift(BaselineShift::Baseline), maBaselineShiftNumber(0), - maResolvingParent(31, 0), + maResolvingParent(32, 0), mbIsClipPathContent(SVGToken::ClipPathNode == mrOwner.getType()), mbStrokeDasharraySet(false) { @@ -2341,6 +2342,27 @@ namespace svgio::svgreader return FillRule::nonzero; } + FillRule SvgStyleAttributes::getClipRule() const + { + if(FillRule::notset != maClipRule) + { + return maClipRule; + } + + const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle(); + + if (pSvgStyleAttributes && maResolvingParent[31] < nStyleDepthLimit) + { + ++maResolvingParent[31]; + auto ret = pSvgStyleAttributes->getClipRule(); + --maResolvingParent[31]; + return ret; + } + + // default is NonZero + return FillRule::nonzero; + } + const SvgNumberVector& SvgStyleAttributes::getStrokeDasharray() const { if(!maStrokeDasharray.empty()) commit 11d27bbbf106ba2029a0ba7e447bff6e2e6cbd7d Author: Caolán McNamara <[email protected]> AuthorDate: Thu Jun 23 16:16:15 2022 +0100 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:18 2022 +0200 tdf#149609 release mouse before showing popups from calc grid window If we capture the mouse in the course of the mouse down handler, then release it before showing a popup to undo any unhelpful seleng capture. Change-Id: I94ead6b516c2b2a019030e0e04760f8e07ff35d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136329 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <[email protected]> diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 3e3fbbe37768..3bdda8cf72fc 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -477,6 +477,7 @@ IMPL_LINK_NOARG(ScGridWindow, PopupModeEndHdl, weld::Popover&, void) mpFilterBox->SetCancelled(); // cancel select // restore the mouse capture state of the GridWindow to // what it was at initial popup time + SAL_WARN_IF(bMouseWasCaptured, "sc.ui", "Is there a scenario where the mouse was captured before mouse down?"); if (bMouseWasCaptured) CaptureMouse(); } @@ -1801,6 +1802,9 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt, MouseEventSta if (pScMod->IsModalMode(mrViewData.GetSfxDocShell())) return; + const bool bWasMouseCaptured = IsMouseCaptured(); + SAL_WARN_IF(bWasMouseCaptured, "sc.ui", "Is there a scenario where the mouse is captured before mouse down?"); + pScActiveViewShell = mrViewData.GetViewShell(); // if left is clicked nScClickMouseModifier = rMEvt.GetModifier(); // to always catch a control click @@ -2057,9 +2061,11 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt, MouseEventSta tools::Rectangle aButtonRect = GetListValButtonRect( aListValPos ); if ( aButtonRect.Contains( aPos ) ) { - // tdf#125917 typically we have the mouse captured already, except if are editing the cell. - // Ensure its captured before the menu is launched even in the cell editing case - CaptureMouse(); + // tdf#149609 if we captured the mouse in the course of this function + // release it before showing the data select menu to undo any unhelpful + // seleng capture + if (!bWasMouseCaptured && IsMouseCaptured()) + ReleaseMouse(); LaunchDataSelectMenu( aListValPos.Col(), aListValPos.Row() ); @@ -2075,7 +2081,11 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt, MouseEventSta ScRange aScenRange; if ( rMEvt.IsLeft() && HasScenarioButton( aPos, aScenRange ) ) { - CaptureMouse(); + // tdf#149609 if we captured the mouse in the course of this function + // release it before showing the data scenario menu to undo any unhelpful + // seleng capture + if (!bWasMouseCaptured && IsMouseCaptured()) + ReleaseMouse(); DoScenarioMenu( aScenRange ); commit a31624f951bf4365239e8ac4578adec79a8d7880 Author: László Németh <[email protected]> AuthorDate: Tue Jul 19 14:53:52 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:18 2022 +0200 tdf#148913 sw: fix crash with pending infobars on Windows Usage of VclPtr<SfxInfoBarWindow> wasn't thread-safe on Windows, resulting random crashing during loading big documents. Regression from commit d89786054715b44aa983d0752484216825c74ae2 "tdf#125909 tdf#141298 sw: show (Hidden) Track Changes infobar". Change-Id: Ic6a6ad43a8cf7ea650ef6d1c0aa5c76c48763ea8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137230 Tested-by: László Németh <[email protected]> Reviewed-by: László Németh <[email protected]> (cherry picked from commit 85a044abdf08bafa93e1caddf38f86e35d7e17f2) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137184 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <[email protected]> diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index 2b58dd5a44bc..cca28ca016ba 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -1479,27 +1479,41 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) } } - VclPtr<SfxInfoBarWindow> pInfoBar = - AppendInfoBar(aInfobarData.msId, aInfobarData.msPrimaryMessage, + // Track Changes infobar: add a button to show/hide Track Changes functions + // Hyphenation infobar: add a button to get more information + // tdf#148913 limit VclPtr usage for these + bool bTrackChanges = aInfobarData.msId == "hiddentrackchanges"; + if ( bTrackChanges || aInfobarData.msId == "hyphenationmissing" ) + { + VclPtr<SfxInfoBarWindow> pInfoBar = + AppendInfoBar(aInfobarData.msId, aInfobarData.msPrimaryMessage, aInfobarData.msSecondaryMessage, aInfobarData.maInfobarType, aInfobarData.mbShowCloseButton); - // Track Changes infobar: add a button to show/hide Track Changes functions - if ( pInfoBar && aInfobarData.msId == "hiddentrackchanges" ) - { - weld::Button& rTrackChangesButton = pInfoBar->addButton(); - rTrackChangesButton.set_label(SfxResId(STR_TRACK_CHANGES_BUTTON)); - rTrackChangesButton.connect_clicked(LINK(this, + // tdf#148913 don't extend this condition to keep it thread-safe + if (pInfoBar) + { + weld::Button& rButton = pInfoBar->addButton(); + rButton.set_label(SfxResId(bTrackChanges + ? STR_TRACK_CHANGES_BUTTON + : STR_HYPHENATION_BUTTON)); + if (bTrackChanges) + { + rButton.connect_clicked(LINK(this, SfxViewFrame, HiddenTrackChangesHandler)); + } + else + { + rButton.connect_clicked(LINK(this, + SfxViewFrame, HyphenationMissingHandler)); + } + } } - - // Hyphenation infobar: add a button to get more information - if ( pInfoBar && aInfobarData.msId == "hyphenationmissing" ) + else { - weld::Button& rHyphenationButton = pInfoBar->addButton(); - rHyphenationButton.set_label(SfxResId(STR_HYPHENATION_BUTTON)); - rHyphenationButton.connect_clicked(LINK(this, - SfxViewFrame, HyphenationMissingHandler)); + AppendInfoBar(aInfobarData.msId, aInfobarData.msPrimaryMessage, + aInfobarData.msSecondaryMessage, aInfobarData.maInfobarType, + aInfobarData.mbShowCloseButton); } aPendingInfobars.pop_back(); commit ee11eafda8a330c18f057373010edd52d7b46d00 Author: Michael Stahl <[email protected]> AuthorDate: Wed Aug 17 10:43:04 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:18 2022 +0200 tdf#147466 sw_redlinehide: avoid crashing by delete un-deleting After the first delete, there is a single redline from 170,0 to 177,9, which contains a section. [ 169] 0x6133358 TextNode "b) 9 (Robin Cook, Jack Straw, Margaret Beckett, David Milliband, William Hague, Philip Hammond, Boris Johnson, Jeremy Hunt, Dominic Raab)", [ 170] 0x61349d8 TextNode "Hangul script is used to write which language?", [ 171] 0x61396f0 SectionNode , [ 172] 0x6138cc8 TextNode "Japanese", [ 173] 0x613ab58 TextNode "Vietnamese", [ 174] 0x613ad78 TextNode "Korean", [ 175] 0x613bc28 TextNode "Chinese", [ 176] 0x24a61c0 EndNode , [ 177] 0x6139568 TextNode "c) Korean", Then the next delete is from 169,137 to 170,0 and it is combined in AppendRedline() with the existing one, removing the existing one. Now the code for tdf#119571 at the end of AppendRedline() that splits up the one redline into 4 redlines, with the section start node and section end node not covered by any of them. AppendRedline() of a delete redline causing previously deleted nodes to become un-deleted is a situation that UpdateFramesForAddDeleteRedline() doesn't expect. Additionally there seems to be an issue with CheckParaRedlineMerge() setting the Section's m_bHiddenFlag, which was unintentional, it should only set m_eMerge flag, but fixing that isn't sufficient. Reportedly this crashes since commit 6433dc223f6d21570e7132c4a580d186a5d5a334 but the problem appears older. Change-Id: Ic83a93d5aaec4ee562fb960693b52bd7b25cb1a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138411 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit 7d730cd580e957ab06b0c7f020ac37dd0c337aa2) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138417 Reviewed-by: Thorsten Behrens <[email protected]> diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index 8a9a70ae2bb9..5052e320f216 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -1666,8 +1666,13 @@ DocumentRedlineManager::AppendRedline(SwRangeRedline* pNewRedl, bool const bCall pNewRedl->SetEnd( *pRStt, pEnd ); break; - case SwComparePosition::CollideStart: case SwComparePosition::CollideEnd: + if (pRStt->nContent != 0) + { // tdf#147466 HACK: don't combine in this case to avoid the tdf#119571 code from *undeleting* section nodes + break; + } + [[fallthrough]]; + case SwComparePosition::CollideStart: if( pRedl->IsOwnRedline( *pNewRedl ) && pRedl->CanCombine( *pNewRedl ) ) { diff --git a/sw/source/core/text/redlnitr.cxx b/sw/source/core/text/redlnitr.cxx index 3613469d7703..5b1e30c47018 100644 --- a/sw/source/core/text/redlnitr.cxx +++ b/sw/source/core/text/redlnitr.cxx @@ -425,7 +425,7 @@ CheckParaRedlineMerge(SwTextFrame & rFrame, SwTextNode & rTextNode, } for (auto const pSectionNode : sections) { - pSectionNode->DelFrames(rFrame.getRootFrame()); + pSectionNode->GetSection().GetFormat()->DelFrames(/*rFrame.getRootFrame()*/); } } auto pRet(std::make_unique<sw::MergedPara>(rFrame, std::move(extents), commit 612fc2f6e7065473833b4aac8ea76ec2bffdfd62 Author: Xisco Fauli <[email protected]> AuthorDate: Wed Aug 17 12:59:51 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:18 2022 +0200 tdf#150452: Revert "tdf#130795 use concurrent hashmap in SharedStringPool" This commit reverts 3749d9af3745c0eaff7239e379578e4e2af89e9d which removes the dependency on the external library cuckoo Without using cuckoo the same file in tdf#130795 takes real 0m4,892s user 0m5,298s sys 0m0,449s With it, it takes real 0m4,914s user 0m5,276s sys 0m0,444s pretty much the same time Change-Id: I4cc9000ac5bf26de22bb9835283ae8d5b3230196 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138435 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> Reviewed-by: Xisco Fauli <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138446 diff --git a/Makefile.fetch b/Makefile.fetch index 87f423971455..1fa06a73d5ec 100644 --- a/Makefile.fetch +++ b/Makefile.fetch @@ -117,7 +117,6 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S $(call fetch_Optional,COINMP,COINMP_TARBALL) \ $(call fetch_Optional,CPPUNIT,CPPUNIT_TARBALL) \ $(call fetch_Optional,CT2N,CT2N_TARBALL) \ - $(call fetch_Optional,CUCKOO,CUCKOO_TARBALL) \ $(call fetch_Optional,CURL,CURL_TARBALL) \ $(call fetch_Optional,EBOOK,EBOOK_TARBALL) \ $(call fetch_Optional,EPM,EPM_TARBALL) \ diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index d86edc543e44..165290b57825 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -4360,37 +4360,4 @@ endif # ENABLE_ZXING endif # SYSTEM_ZXING - - -ifneq ($(SYSTEM_CUCKOO),) - -gb_ExternalProject__use_cuckoo_headers := - -define gb_LinkTarget__use_cuckoo_headers -$(call gb_LinkTarget_set_include,$(1),\ - -I$(call gb_UnpackedTarball_get_dir,cuckoo) \ - $$(INCLUDE) \ -) - -endef - -else # !SYSTEM_CUCKOO - -define gb_ExternalProject__use_cuckoo_headers -$(call gb_ExternalProject_use_unpacked,$(1),cuckoo) - -endef - -define gb_LinkTarget__use_cuckoo_headers -$(call gb_LinkTarget_use_unpacked,$(1),cuckoo) -$(call gb_LinkTarget_set_include,$(1),\ - -I$(call gb_UnpackedTarball_get_dir,cuckoo) \ - $$(INCLUDE) \ -) - -endef - -endif # SYSTEM_CUCKOO - - # vim: set noet sw=4 ts=4: diff --git a/bin/oss-fuzz-setup.sh b/bin/oss-fuzz-setup.sh index 18c3fcfb68d9..b2b0be8a0aae 100755 --- a/bin/oss-fuzz-setup.sh +++ b/bin/oss-fuzz-setup.sh @@ -23,7 +23,6 @@ curl --no-progress-meter -S \ -C - -O https://dev-www.libreoffice.org/src/$BOX2D_TARBALL \ -C - -O https://dev-www.libreoffice.org/src/$DTOA_TARBALL \ -C - -O https://dev-www.libreoffice.org/src/$EXPAT_TARBALL \ - -C - -O https://dev-www.libreoffice.org/src/$CUCKOO_TARBALL \ -C - -O https://dev-www.libreoffice.org/src/$LIBJPEG_TURBO_TARBALL \ -C - -O https://dev-www.libreoffice.org/src/$LCMS2_TARBALL \ -C - -O https://dev-www.libreoffice.org/src/$LIBEXTTEXTCAT_TARBALL \ diff --git a/config_host.mk.in b/config_host.mk.in index 5e3337a46eef..31a501327806 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -95,7 +95,6 @@ export CPPUNIT_CFLAGS=$(gb_SPACE)@CPPUNIT_CFLAGS@ export CPPUNIT_LIBS=$(gb_SPACE)@CPPUNIT_LIBS@ export CPUNAME=@CPUNAME@ export CROSS_COMPILING=@CROSS_COMPILING@ -export CUCKOO_CFLAGS=$(gb_SPACE)@CUCKOO_CFLAGS@ export CURL=@CURL@ export CURL_CFLAGS=$(gb_SPACE)@CURL_CFLAGS@ export CURL_LIBS=$(gb_SPACE)@CURL_LIBS@ @@ -598,7 +597,6 @@ export SYSTEM_BZIP2=@SYSTEM_BZIP2@ export SYSTEM_CAIRO=@SYSTEM_CAIRO@ export SYSTEM_CLUCENE=@SYSTEM_CLUCENE@ export SYSTEM_CPPUNIT=@SYSTEM_CPPUNIT@ -export SYSTEM_CUCKOO=@SYSTEM_CUCKOO@ export SYSTEM_CURL=@SYSTEM_CURL@ export SYSTEM_DICTS=@SYSTEM_DICTS@ export SYSTEM_EXPAT=@SYSTEM_EXPAT@ diff --git a/configure.ac b/configure.ac index 16611284b0b9..1bbf6b84ef35 100644 --- a/configure.ac +++ b/configure.ac @@ -2376,11 +2376,6 @@ AC_ARG_WITH(system-boost, [Use boost already on system.]),, [with_system_boost="$with_system_headers"]) -AC_ARG_WITH(system-cuckoo, - AS_HELP_STRING([--with-system-cuckoo], - [Use libcuckoo already on system.]),, - [with_system_cuckoo="$with_system_headers"]) - AC_ARG_WITH(system-glm, AS_HELP_STRING([--with-system-glm], [Use glm already on system.]),, @@ -5622,7 +5617,6 @@ if test "$cross_compiling" = "yes"; then BOOST CAIRO CLUCENE - CUCKOO CURL DBCONNECTIVITY DESKTOP @@ -10457,26 +10451,6 @@ dnl Check for system mdds dnl =================================================================== libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"]) -dnl =================================================================== -dnl Check for system cuckoo -dnl =================================================================== -AC_MSG_CHECKING([which cuckoo to use]) -if test "$with_system_cuckoo" = "yes"; then - AC_MSG_RESULT([external]) - SYSTEM_CUCKOO=TRUE - AC_LANG_PUSH([C++]) - AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [], - [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], []) - AC_LANG_POP([C++]) -else - AC_MSG_RESULT([internal]) - BUILD_TYPE="$BUILD_TYPE CUCKOO" - SYSTEM_CUCKOO= - CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo" -fi -AC_SUBST([CUCKOO_CFLAGS]) -AC_SUBST([SYSTEM_CUCKOO]) - dnl =================================================================== dnl Check for system glm dnl =================================================================== diff --git a/distro-configs/LibreOfficeCoverity.conf b/distro-configs/LibreOfficeCoverity.conf index e802f25e8f29..51f80628701a 100644 --- a/distro-configs/LibreOfficeCoverity.conf +++ b/distro-configs/LibreOfficeCoverity.conf @@ -11,7 +11,6 @@ --with-idlc-cpp=cpp --with-system-libs --with-system-headers ---without-system-cuckoo --without-system-cppunit --enable-dbus --enable-extension-integration diff --git a/distro-configs/LibreOfficeFlatpak.conf b/distro-configs/LibreOfficeFlatpak.conf index 438252c6c408..f6f12f776043 100644 --- a/distro-configs/LibreOfficeFlatpak.conf +++ b/distro-configs/LibreOfficeFlatpak.conf @@ -19,7 +19,6 @@ --without-system-clucene --without-system-coinmp --without-system-cppunit ---without-system-cuckoo --without-system-firebird --without-system-glm --without-system-gpgmepp diff --git a/download.lst b/download.lst index 505bb3027d5b..0c0ab469de95 100644 --- a/download.lst +++ b/download.lst @@ -294,5 +294,3 @@ export ZXING_TARBALL := zxing-cpp-1.2.0.tar.gz NUMBERTEXT_EXTENSION_SHA256SUM := 1568ed1d2feb8210bb5de61d69574a165cded536cfa17c6953c9064076469de2 export OPENSYMBOL_SHA256SUM := f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140 export OPENSYMBOL_TTF := f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf -export CUCKOO_SHA256SUM := 471dd83a813ed2816c2246c373004470ad0f6612c7ce72038929dc5161cdd58e -export CUCKOO_TARBALL := libcuckoo-93217f8d391718380c508a722ab9acd5e9081233.tar.gz diff --git a/external/Module_external.mk b/external/Module_external.mk index 4e1a04ccc317..f5c55cf716b4 100644 --- a/external/Module_external.mk +++ b/external/Module_external.mk @@ -106,7 +106,6 @@ $(eval $(call gb_Module_add_moduledirs,external,\ $(call gb_Helper_optional,XSLTML,xsltml) \ $(call gb_Helper_optional,ZLIB,zlib) \ $(call gb_Helper_optional,ZMF,libzmf) \ - $(call gb_Helper_optional,CUCKOO,cuckoo) \ )) # vim: set noet sw=4 ts=4: diff --git a/external/cuckoo/Makefile b/external/cuckoo/Makefile deleted file mode 100644 index e4968cf85fb6..000000000000 --- a/external/cuckoo/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- - -module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) - -include $(module_directory)/../../solenv/gbuild/partial_build.mk - -# vim: set noet sw=4 ts=4: diff --git a/external/cuckoo/Module_cuckoo.mk b/external/cuckoo/Module_cuckoo.mk deleted file mode 100644 index d2fda7b1e286..000000000000 --- a/external/cuckoo/Module_cuckoo.mk +++ /dev/null @@ -1,16 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_Module_Module,cuckoo)) - -$(eval $(call gb_Module_add_targets,cuckoo,\ - UnpackedTarball_cuckoo \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/external/cuckoo/README b/external/cuckoo/README deleted file mode 100644 index 6b8c98342173..000000000000 --- a/external/cuckoo/README +++ /dev/null @@ -1,3 +0,0 @@ -A high-performance, concurrent hash table - -[https://github.com/efficient/libcuckoo] \ No newline at end of file diff --git a/external/cuckoo/UnpackedTarball_cuckoo.mk b/external/cuckoo/UnpackedTarball_cuckoo.mk deleted file mode 100644 index e0426181b3a7..000000000000 --- a/external/cuckoo/UnpackedTarball_cuckoo.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_UnpackedTarball_UnpackedTarball,cuckoo)) - -$(eval $(call gb_UnpackedTarball_set_tarball,cuckoo,$(CUCKOO_TARBALL))) - -$(eval $(call gb_UnpackedTarball_set_patchlevel,cuckoo,0)) - -$(eval $(call gb_UnpackedTarball_update_autoconf_configs,cuckoo)) - -$(eval $(call gb_UnpackedTarball_add_patches,cuckoo,\ - external/cuckoo/cuckoo-coverity.patch \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/external/cuckoo/cuckoo-coverity.patch b/external/cuckoo/cuckoo-coverity.patch deleted file mode 100644 index 273d3bf1f0e3..000000000000 --- a/external/cuckoo/cuckoo-coverity.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- libcuckoo/cuckoohash_map.hh 2021-09-11 11:29:05.656553870 +0100 -+++ libcuckoo/cuckoohash_map.hh 2021-09-11 11:31:48.265203248 +0100 -@@ -866,7 +866,8 @@ - - class TwoBuckets { - public: -- TwoBuckets() {} -+ TwoBuckets() -+ : i1(0), i2(0) {} - TwoBuckets(size_type i1_, size_type i2_, locked_table_mode) - : i1(i1_), i2(i2_) {} - TwoBuckets(locks_t &locks, size_type i1_, size_type i2_, normal_mode) -@@ -1552,7 +1553,8 @@ - " MAX_BFS_PATH_LEN - 1"); - static_assert(-1 >= std::numeric_limits<decltype(depth)>::min(), - "The depth type must be able to hold a value of -1"); -- b_slot() {} -+ b_slot() -+ : bucket(0), pathcode(0), depth(0) {} - b_slot(const size_type b, const uint16_t p, const decltype(depth) d) - : bucket(b), pathcode(p), depth(d) { - assert(d < MAX_BFS_PATH_LEN); diff --git a/readlicense_oo/license/license.xml b/readlicense_oo/license/license.xml index 2773e9df790f..53de23155b1d 100644 --- a/readlicense_oo/license/license.xml +++ b/readlicense_oo/license/license.xml @@ -676,12 +676,6 @@ <p><a href="#a__LGPL_version_2">Jump to LGPL Version 2</a></p> <p><a href="#a__MPL_version_1_1">Jump to MPL Version 1.1</a></p> </div> - <div class="LIBCUCKOO" > - <h2>libcuckoo</h2> - <p>The following software may be included in this product: libcuckoo. Use of any of this software is governed by - the terms of the license below:</p> - <p><a href="#a__Apache_License_version_2_0">Jump to Apache License Version 2.0</a></p> - </div> <div class="CURL" > <h2>libcurl</h2> <p>The following software may be included in this product: libcurl. Use of any of this software is governed by diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in index 4adee8d75cdb..8d6cd88a2a33 100644 --- a/solenv/flatpak-manifest.in +++ b/solenv/flatpak-manifest.in @@ -682,13 +682,6 @@ "type": "file", "dest": "external/tarballs", "dest-filename": "@OPENSYMBOL_TTF@" - }, - { - "url": "https://dev-www.libreoffice.org/src/@CUCKOO_TARBALL@", - "sha256": "@CUCKOO_SHA256SUM@", - "type": "file", - "dest": "external/tarballs", - "dest-filename": "@CUCKOO_TARBALL@" } { "url": "https://github.com/antijingoist/opendyslexic/releases/download/v0.9.10/opendyslexic-0.9.10-beta-2019.09.16.zip", diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk index 4e388ca0d471..6e79be4fcf06 100644 --- a/svl/Library_svl.mk +++ b/svl/Library_svl.mk @@ -21,7 +21,6 @@ $(eval $(call gb_Library_Library,svl)) $(eval $(call gb_Library_use_externals,svl,\ boost_headers \ - cuckoo_headers \ $(if $(filter LINUX MACOSX ANDROID iOS %BSD SOLARIS HAIKU,$(OS)), \ curl) \ dtoa \ diff --git a/svl/source/misc/sharedstringpool.cxx b/svl/source/misc/sharedstringpool.cxx index d88b0a2c22ef..2fe8fd8a13ff 100644 --- a/svl/source/misc/sharedstringpool.cxx +++ b/svl/source/misc/sharedstringpool.cxx @@ -15,64 +15,50 @@ #include <unordered_map> #include <unordered_set> -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wshadow" -#endif -#if defined __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif -#if defined _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4324) // structure was padded due to alignment specifier -#endif -#include <libcuckoo/cuckoohash_map.hh> -#if defined _MSC_VER -#pragma warning(pop) -#endif -#if defined __clang__ -#pragma clang diagnostic pop -#endif -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif - -namespace svl -{ +/** create a key class that caches the hashcode */ namespace { -sal_Int32 getRefCount(const rtl_uString* p) { return (p->refCount & 0x3FFFFFFF); } - -// we store the key twice, because the concurrent hashtable we are using does not provide any way to return the key in use -typedef std::pair<OUString, OUString> Mapped; - -struct HashFunction +struct StringWithHash { - size_t operator()(rtl_uString* const key) const + OUString str; + sal_Int32 hashCode; + StringWithHash(OUString s) + : str(s) + , hashCode(s.hashCode()) { - return rtl_ustr_hashCode_WithLength(key->buffer, key->length); } -}; -struct EqualsFunction -{ - bool operator()(rtl_uString* const lhs, rtl_uString* const rhs) const + bool operator==(StringWithHash const& rhs) const { - return OUString::unacquired(&lhs) == OUString::unacquired(&rhs); + if (hashCode != rhs.hashCode) + return false; + return str == rhs.str; } }; } +namespace std +{ +template <> struct hash<StringWithHash> +{ + std::size_t operator()(const StringWithHash& k) const { return k.hashCode; } +}; +} + +namespace svl +{ +namespace +{ +sal_Int32 getRefCount(const rtl_uString* p) { return (p->refCount & 0x3FFFFFFF); } +} + struct SharedStringPool::Impl { + mutable std::mutex maMutex; // We use this map for two purposes - to store lower->upper case mappings - // and to store an upper->upper mapping. - // The second mapping is used so that we can - // share the same rtl_uString object between different keys which map to the same uppercase string to save memory. - // - // Docs for this concurrent hashtable here: http://efficient.github.io/libcuckoo/classlibcuckoo_1_1cuckoohash__map.html - libcuckoo::cuckoohash_map<rtl_uString*, Mapped, HashFunction, EqualsFunction> maStrMap; + // and to retrieve a shared uppercase object, so the management logic + // is quite complex. + std::unordered_map<StringWithHash, OUString> maStrMap; const CharClass& mrCharClass; explicit Impl(const CharClass& rCharClass) @@ -90,50 +76,43 @@ SharedStringPool::~SharedStringPool() {} SharedString SharedStringPool::intern(const OUString& rStr) { - auto& rMap = mpImpl->maStrMap; + StringWithHash aStrWithHash(rStr); + std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex); - rtl_uString *pResultLower = {}, *pResultUpper = {}; // bogus GCC 12 -Werror=maybe-uninitialized - if (rMap.find_fn(rStr.pData, [&](const Mapped& rMapped) { - pResultLower = rMapped.first.pData; - pResultUpper = rMapped.second.pData; - })) + auto[mapIt, bInserted] = mpImpl->maStrMap.emplace(aStrWithHash, rStr); + if (!bInserted) // there is already a mapping - return SharedString(pResultLower, pResultUpper); + return SharedString(mapIt->first.str.pData, mapIt->second.pData); // This is a new string insertion. Establish mapping to upper-case variant. OUString aUpper = mpImpl->mrCharClass.uppercase(rStr); - - // either insert a new upper->upper mapping, or write the existing mapping into aUpper - mpImpl->maStrMap.uprase_fn(aUpper.pData, - [&](Mapped& mapped) -> bool { - aUpper = mapped.second; - return false; - }, - aUpper, aUpper); - if (aUpper == rStr) - // no need to do anything more, because the key is already uppercase - return SharedString(aUpper.pData, aUpper.pData); - - // either insert a new lower->upper mapping, or write the existing mapping into aLower - if (mpImpl->maStrMap.uprase_fn(rStr.pData, - [&](Mapped& mapped) -> bool { - pResultLower = mapped.first.pData; - pResultUpper = mapped.second.pData; - return false; - }, - rStr, aUpper)) + // no need to do anything more, because we inserted an upper->upper mapping + return SharedString(mapIt->first.str.pData, mapIt->second.pData); + + // We need to insert a lower->upper mapping, so also insert + // an upper->upper mapping, which we can use both for when an upper string + // is interned, and to look up a shared upper string. + StringWithHash aUpperWithHash(aUpper); + auto mapIt2 = mpImpl->maStrMap.find(aUpperWithHash); + if (mapIt2 != mpImpl->maStrMap.end()) { - pResultLower = rStr.pData; - pResultUpper = aUpper.pData; + // there is an already existing upper string + mapIt->second = mapIt2->first.str; + return SharedString(mapIt->first.str.pData, mapIt->second.pData); } - return SharedString(pResultLower, pResultUpper); + // There is no already existing upper string. + // First, update using the iterator, can't do this later because + // the iterator will be invalid. + mapIt->second = aUpper; + mpImpl->maStrMap.emplace_hint(mapIt2, aUpperWithHash, aUpper); + return SharedString(rStr.pData, aUpper.pData); } void SharedStringPool::purge() { - auto locked_table = mpImpl->maStrMap.lock_table(); + std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex); // Because we can have an uppercase entry mapped to itself, // and then a bunch of lowercase entries mapped to that same @@ -141,12 +120,12 @@ void SharedStringPool::purge() // time to remove lowercase entries, and then only can we // check for unused uppercase entries. - auto it = locked_table.begin(); - auto itEnd = locked_table.end(); + auto it = mpImpl->maStrMap.begin(); + auto itEnd = mpImpl->maStrMap.end(); while (it != itEnd) { - rtl_uString* p1 = it->second.first.pData; - rtl_uString* p2 = it->second.second.pData; + rtl_uString* p1 = it->first.str.pData; + rtl_uString* p2 = it->second.pData; if (p1 != p2) { // normal case - lowercase mapped to uppercase, which @@ -154,19 +133,19 @@ void SharedStringPool::purge() // entry as the key in the map if (getRefCount(p1) == 1) { - it = locked_table.erase(it); + it = mpImpl->maStrMap.erase(it); continue; } } ++it; } - it = locked_table.begin(); - itEnd = locked_table.end(); + it = mpImpl->maStrMap.begin(); + itEnd = mpImpl->maStrMap.end(); while (it != itEnd) { - rtl_uString* p1 = it->second.first.pData; - rtl_uString* p2 = it->second.second.pData; + rtl_uString* p1 = it->first.str.pData; + rtl_uString* p2 = it->second.pData; if (p1 == p2) { // uppercase which is mapped to itself, which means @@ -174,7 +153,7 @@ void SharedStringPool::purge() // one ref-counted entry in the value in the map if (getRefCount(p1) == 2) { - it = locked_table.erase(it); + it = mpImpl->maStrMap.erase(it); continue; } } @@ -182,15 +161,19 @@ void SharedStringPool::purge() } } -size_t SharedStringPool::getCount() const { return mpImpl->maStrMap.size(); } +size_t SharedStringPool::getCount() const +{ + std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex); + return mpImpl->maStrMap.size(); +} size_t SharedStringPool::getCountIgnoreCase() const { + std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex); // this is only called from unit tests, so no need to be efficient std::unordered_set<OUString> aUpperSet; - auto locked_table = mpImpl->maStrMap.lock_table(); - for (auto const& pair : locked_table) - aUpperSet.insert(pair.second.second); + for (auto const& pair : mpImpl->maStrMap) + aUpperSet.insert(pair.second); return aUpperSet.size(); } } commit 9662729a1ea4ca7fe8bbbcb5193a6eeb97ff8ac6 Author: Xisco Fauli <[email protected]> AuthorDate: Wed Aug 17 16:29:44 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:18 2022 +0200 tdf#150170: Revert "flatten TableType in ColumnSpanSet" This reverts commit 99cd1d8834bb708afc81c825ff2b7992b7acb37d. This commit is only reverted in libreoffice-7-3 branch. In master and libreoffice-7-4 the issue is not reproducible after the default Calc number of columns was increased to 16384 Change-Id: I28dcc1c56c803d49ea101dbb0ace7085f7a78820 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138445 Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/sc/inc/columnspanset.hxx b/sc/inc/columnspanset.hxx index d8cfc41f524b..d95ac9c82fc1 100644 --- a/sc/inc/columnspanset.hxx +++ b/sc/inc/columnspanset.hxx @@ -11,7 +11,6 @@ #include "address.hxx" -#include <optional> #include <vector> #include <mdds/flat_segment_tree.hpp> @@ -60,7 +59,7 @@ private: ColumnType(SCROW nStart, SCROW nEnd, bool bInit); }; - typedef std::vector<std::optional<ColumnType>> TableType; + typedef std::vector<std::unique_ptr<ColumnType>> TableType; std::vector<TableType> maTables; diff --git a/sc/source/core/data/columnspanset.cxx b/sc/source/core/data/columnspanset.cxx index eb09ea26be98..fc7235fda356 100644 --- a/sc/source/core/data/columnspanset.cxx +++ b/sc/source/core/data/columnspanset.cxx @@ -74,7 +74,7 @@ ColumnSpanSet::ColumnType& ColumnSpanSet::getColumn(const ScDocument& rDoc, SCTA rTab.resize(nCol+1); if (!rTab[nCol]) - rTab[nCol].emplace(0, rDoc.MaxRow(), /*bInit*/false); + rTab[nCol].reset(new ColumnType(0, rDoc.MaxRow(), /*bInit*/false)); return *rTab[nCol]; } @@ -165,7 +165,7 @@ void ColumnSpanSet::executeAction(ScDocument& rDoc, Action& ac) const break; ac.startColumn(nTab, nCol); - const ColumnType& rCol = *rTab[nCol]; + ColumnType& rCol = *rTab[nCol]; ColumnSpansType::const_iterator it = rCol.maSpans.begin(), itEnd = rCol.maSpans.end(); SCROW nRow1, nRow2; nRow1 = it->first; @@ -203,7 +203,7 @@ void ColumnSpanSet::executeColumnAction(ScDocument& rDoc, ColumnAction& ac) cons ScColumn& rColumn = pTab->aCol[nCol]; ac.startColumn(&rColumn); - const ColumnType& rCol = *rTab[nCol]; + ColumnType& rCol = *rTab[nCol]; ColumnSpansType::const_iterator it = rCol.maSpans.begin(), itEnd = rCol.maSpans.end(); SCROW nRow1, nRow2; nRow1 = it->first; commit 0d68ff1c2eb2fdd85909fd440f9182b1340300b7 Author: Caolán McNamara <[email protected]> AuthorDate: Mon Aug 15 11:57:57 2022 +0100 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 Resolves: tdf#149858 embedded starmath not using correct initial zoom since... commit ea21b870f8549d0110ef65187af50694a06458ca Date: Mon Apr 19 15:22:22 2021 +0100 weld SmGraphicWindow where the outer Window is not directly drawn into any more Change-Id: I70f45590f0fb7ff2f7af80da8873d580d219aca4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138280 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> diff --git a/starmath/inc/view.hxx b/starmath/inc/view.hxx index 4ab877358f94..3094eaf6ebbd 100644 --- a/starmath/inc/view.hxx +++ b/starmath/inc/view.hxx @@ -54,9 +54,6 @@ private: DECL_LINK(ScrollHdl, weld::ScrolledWindow&, void); - void SetGraphicMapMode(const MapMode& rNewMapMode); - MapMode GetGraphicMapMode() const; - public: explicit SmGraphicWindow(SmViewShell& rShell); virtual void dispose() override; @@ -75,6 +72,9 @@ public: virtual void Resize() override; void ShowContextMenu(const CommandEvent& rCEvt); + void SetGraphicMapMode(const MapMode& rNewMapMode); + MapMode GetGraphicMapMode() const; + SmGraphicWidget& GetGraphicWidget() { return *mxGraphic; diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx index f2d5859a0da1..7ebd822c7ed3 100644 --- a/starmath/source/view.cxx +++ b/starmath/source/view.cxx @@ -1101,8 +1101,12 @@ void SmViewShell::InnerResizePixel(const Point &rOfs, const Size &rSize, bool) if ( !aObjSize.IsEmpty() ) { Size aProvidedSize = GetWindow()->PixelToLogic(rSize, MapMode(MapUnit::Map100thMM)); - SfxViewShell::SetZoomFactor( Fraction( aProvidedSize.Width(), aObjSize.Width() ), - Fraction( aProvidedSize.Height(), aObjSize.Height() ) ); + Fraction aZoomX(aProvidedSize.Width(), aObjSize.Width()); + Fraction aZoomY(aProvidedSize.Height(), aObjSize.Height()); + MapMode aMap(mxGraphicWindow->GetGraphicMapMode()); + aMap.SetScaleX(aZoomX); + aMap.SetScaleY(aZoomY); + mxGraphicWindow->SetGraphicMapMode(aMap); } SetBorderPixel( SvBorder() ); commit b1996ece575196052ee09833c8a887238c3e2972 Author: Michael Stahl <[email protected]> AuthorDate: Fri Aug 12 16:43:12 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 tdf#149921 ucb: webdav-curl: WNT: certificate revocation check - don't require it to be successful. Trying to connect to a server with self-signed CA results in: warn:ucb.ucp.webdav.curl:6796:6568:ucb/source/ucp/webdav-curl/CurlSession.cxx:946: curl_easy_perform failed: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - The revocation function was unable to check revocation for the certificate. Apparently schannel wants to check by default (called with SCH_CRED_REVOCATION_CHECK_CHAIN) that all the certificates aren't revoked, but the self-signed CA doesn't specify how to check. Set it to only check revocation when the way to do so actually works, via CURLSSLOPT_REVOKE_BEST_EFFORT, which sets these flags: SCH_CRED_IGNORE_NO_REVOCATION_CHECK | SCH_CRED_IGNORE_REVOCATION_OFFLINE | SCH_CRED_REVOCATION_CHECK_CHAIN Change-Id: I6d77ca23fe2012d8a5d65000b14775070b5c9a0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138204 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit f6a0ca0e92e41ad8fea71acdacdc7ec5e775dc59) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138276 Reviewed-by: Caolán McNamara <[email protected]> diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx b/ucb/source/ucp/webdav-curl/CurlSession.cxx index 7d56dfebd3e4..fe3b316c4a14 100644 --- a/ucb/source/ucp/webdav-curl/CurlSession.cxx +++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx @@ -680,8 +680,17 @@ CurlSession::CurlSession(uno::Reference<uno::XComponentContext> const& xContext, rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_READFUNCTION, &read_callback); assert(rc == CURLE_OK); rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_HEADERFUNCTION, &header_callback); - // set this initially, may be overwritten during authentication assert(rc == CURLE_OK); + // tdf#149921 by default, with schannel (WNT) connection fails if revocation + // lists cannot be checked; try to limit the checking to when revocation + // lists can actually be retrieved (usually not the case for self-signed CA) +#if CURL_AT_LEAST_VERSION(7, 70, 0) + rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_SSL_OPTIONS, CURLSSLOPT_REVOKE_BEST_EFFORT); + assert(rc == CURLE_OK); + rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_REVOKE_BEST_EFFORT); + assert(rc == CURLE_OK); +#endif + // set this initially, may be overwritten during authentication rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_HTTPAUTH, CURLAUTH_ANY); assert(rc == CURLE_OK); // ANY is always available // always set CURLOPT_PROXY to suppress proxy detection in libcurl commit 98d704bce3e0444a1c08bc1218ab4c48a9eb22d9 Author: Caolán McNamara <[email protected]> AuthorDate: Thu Aug 11 11:04:14 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 connectivity: avoid divide by zero in calculateTimeOuts See https://crashreport.libreoffice.org/stats/signature/connectivity::OConnectionPool::propertyChange(com::sun::star::beans::PropertyChangeEvent%20const%20&) To reproduce this, blow away your config and start writer, visit tools, options, base, connections and enable connection pooling enabled, find com.sun.star.sdbcx.comp.hdqldb.Driver and "enable pooling for this driver" and "apply" with the default 120 seconds, ok and exit then open a database (based on hsqldb) and click on "tables" (to start a connection) that default 120 seconds is the input for calculateTimeOuts (this becomes a final m_nALiveCount of 10 by the divide by 20), now visit the options again and change the 120 to something else and ok and the input for calculateTimeOuts is the old "10" calculated before and not the new expected value. The reason appears to be in OConnectionPool::propertyChange, it expects to get the new value of the property from evt.NewValue but it gets an empty Any so the m_nALiveCount is not actually changed, so the assumption it was set and will be >= 20 and sanely divisible by 20 doesn't hold. For this easy fix, fetch the new value explicitly from the config Change-Id: Ie91bf5328634f9aafbda1814b10c29b86a3f9cbe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138119 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/connectivity/source/cpool/ZConnectionPool.cxx b/connectivity/source/cpool/ZConnectionPool.cxx index cc90fa464e16..23e6dda1d226 100644 --- a/connectivity/source/cpool/ZConnectionPool.cxx +++ b/connectivity/source/cpool/ZConnectionPool.cxx @@ -282,7 +282,7 @@ void SAL_CALL OConnectionPool::propertyChange( const PropertyChangeEvent& evt ) { if(TIMEOUT_NODENAME == evt.PropertyName) { - evt.NewValue >>= m_nALiveCount; + OPoolCollection::getNodeValue(TIMEOUT_NODENAME, m_xDriverNode) >>= m_nALiveCount; calculateTimeOuts(); } } commit 31291c5ba744077004d1099412787697e1c94c80 Author: Michael Stahl <[email protected]> AuthorDate: Fri Aug 12 17:39:18 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 sw: fix crash in InitBookmarks() with forum-mso-en-8410.docx Error: attempt to dereference a past-the-end iterator. Probably this only crashes in the assert(iter->pNode...) as the rest of the function already checks that "iter == end". (regression from commit 46e04a712e97f9095ef4da7f0e52f50cf2bfbb32) Change-Id: If652a15d1cdebb21fbce028fceeaee8dce8f7f6d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138130 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx index c09aede4c5d6..6cf02c1f075b 100644 --- a/sw/source/core/text/porlay.cxx +++ b/sw/source/core/text/porlay.cxx @@ -1033,6 +1033,10 @@ static void InitBookmarks( break; } } + if (iter == end) + { + break; // remaining marks are hidden + } } } commit cd53742463a498f69823498e17b44685e24b60a8 Author: Jean-Pierre Ledure <[email protected]> AuthorDate: Wed Aug 10 16:07:07 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 ScriptForge - tdf#149983 dialog.EndExecute() failure In SF_PythonHelper._PythonDispatcher(): Force a hardcoded call of the methods in the Dialog service which may potentially be invoked while the dialog is displayed, bypassing the generic CallByName() Basic builtin function: Activate Controls EndExecute Execute (Controls is already hardcoded because returning an array) Patch on master: https://gerrit.libreoffice.org/c/core/+/137084 Patch on libreoffice-7-4: https://gerrit.libreoffice.org/c/core/+/137113 Change-Id: I1d2ef4d6e5d5e2863ac39ce646084cbd9265fe84 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138093 Tested-by: Jenkins Tested-by: Jean-Pierre Ledure <[email protected]> Reviewed-by: Jean-Pierre Ledure <[email protected]> Reviewed-by: Rafael Lima <[email protected]> diff --git a/wizards/source/scriptforge/SF_PythonHelper.xba b/wizards/source/scriptforge/SF_PythonHelper.xba index 5b919ba5abe1..d257df3cab27 100644 --- a/wizards/source/scriptforge/SF_PythonHelper.xba +++ b/wizards/source/scriptforge/SF_PythonHelper.xba @@ -614,6 +614,7 @@ Const cstArgArray = 512 ' Any argument can be a 2D array Const cstRetArray = 1024 ' Return value can be an array Const cstUno = 256 ' Return value can be a UNO object Const cstObject = 2048 ' 1st argument is a Basic object when numeric +Const cstHardCode = 4096 ' Method must not be executed with CallByName() ' Object nature in returned array Const objMODULE = 1, objCLASS = 2, objUNO = 3 @@ -792,6 +793,17 @@ Try: If Script = "Controls" Then vReturn = vBasicObject.Controls(vArgs(0)) End Select + ' Methods in class modules may better not be executed with CallByName() + ElseIf bBasicClass And ((CallType And vbMethod) + (CallType And cstHardCode)) = vbMethod + cstHardCode Then + Select Case sServiceName + Case "SFDialogs.Dialog" + Select Case Script + Case "Activate" : vReturn = vBasicObject.Activate() + Case "EndExecute" : vReturn = vBasicObject.EndExecute(vArgs(0)) + Case "Execute" : vReturn = vBasicObject.Execute(vArgs(0)) + End Select + End Select + ' Methods in class modules are invoked with CallByName ElseIf bBasicClass And ((CallType And vbMethod) = vbMethod) Then Select Case UBound(vArgs) diff --git a/wizards/source/scriptforge/python/scriptforge.py b/wizards/source/scriptforge/python/scriptforge.py index 9dc95d21f715..894ead016574 100644 --- a/wizards/source/scriptforge/python/scriptforge.py +++ b/wizards/source/scriptforge/python/scriptforge.py @@ -445,6 +445,7 @@ class SFServices(object): flgArrayRet = 1024 # Invoked service method can return a 2D array (standard modules) or any array (class modules) flgUno = 256 # Invoked service method/property can return a UNO object flgObject = 2048 # 1st argument may be a Basic object + flgHardCode = 4096 # Force hardcoded call to method, avoid CallByName() # Basic class type moduleClass, moduleStandard = 2, 1 # @@ -1652,16 +1653,16 @@ class SFDialogs: return container, library, dialogname, ScriptForge.componentcontext def Activate(self): - return self.ExecMethod(self.vbMethod, 'Activate') + return self.ExecMethod(self.vbMethod + self.flgHardCode, 'Activate') def Controls(self, controlname = ''): - return self.ExecMethod(self.vbMethod + self.flgArrayRet, 'Controls', controlname) + return self.ExecMethod(self.vbMethod + self.flgArrayRet + self.flgHardCode, 'Controls', controlname) def EndExecute(self, returnvalue): - return self.ExecMethod(self.vbMethod, 'EndExecute', returnvalue) + return self.ExecMethod(self.vbMethod + self.flgHardCode, 'EndExecute', returnvalue) def Execute(self, modal = True): - return self.ExecMethod(self.vbMethod, 'Execute', modal) + return self.ExecMethod(self.vbMethod + self.flgHardCode, 'Execute', modal) def GetTextsFromL10N(self, l10n): l10nobj = l10n.objectreference if isinstance(l10n, SFScriptForge.SF_L10N) else l10n commit 9141b7b1a99117882f2129e4348b9bf0ad2b903a Author: Michael Stahl <[email protected]> AuthorDate: Mon Aug 8 16:12:14 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 sw_fieldmarkhide: fix crash on exporting forum-mso-en-4034.docx to ODT The problem is that there's a field in a preceding paragraph that ends immediately before another field starts, and so the backwards iteration erroneously picks it up in ModelToViewHelper ctor. Change-Id: I6e65c04e0372377b3af48f1d80de287b6113e1c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137986 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit 4f62ae798cc1f9f7bc524e408fc7a370345b40a8) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138026 Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/source/core/txtnode/modeltoviewhelper.cxx b/sw/source/core/txtnode/modeltoviewhelper.cxx index 1f35cd1ee614..8f0d5ccd7676 100644 --- a/sw/source/core/txtnode/modeltoviewhelper.cxx +++ b/sw/source/core/txtnode/modeltoviewhelper.cxx @@ -140,8 +140,16 @@ ModelToViewHelper::ModelToViewHelper(const SwTextNode &rNode, // skip it, must be handled in loop below if (pFieldMark->GetMarkStart().nNode < rNode) { - SwPosition const sepPos(::sw::mark::FindFieldSep(*pFieldMark)); - startedFields.emplace_front(pFieldMark, sepPos.nNode < rNode); + // this can be a nested field's end - skip over those! + if (pFieldMark->GetMarkEnd().nNode < rNode) + { + assert(cursor.GetPoint()->nNode.GetNode().GetTextNode()->GetText()[cursor.GetPoint()->nContent.GetIndex()] == CH_TXT_ATR_FIELDEND); + } + else + { + SwPosition const sepPos(::sw::mark::FindFieldSep(*pFieldMark)); + startedFields.emplace_front(pFieldMark, sepPos.nNode < rNode); + } *cursor.GetPoint() = pFieldMark->GetMarkStart(); } if (!cursor.Move(fnMoveBackward, GoInContent)) commit d73ec5580e95a9ff4d74b3757d0dcd89b2fc866d Author: Caolán McNamara <[email protected]> AuthorDate: Wed Aug 10 13:11:05 2022 +0100 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 gtk3: silence 'invalid cast from 'GtkWindow' to 'GtkMenuShell' warning from the sidebar tab due to the accelerators in there its a bogus check in gtk3 in this case of a menu attached to a MenuButton Change-Id: Ie5216e749993f3d44bfc2e4560cd3b2f49aa8aec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138114 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 965dbad3d9a6..6b97261e7e89 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -22496,16 +22496,44 @@ bool IsAllowedBuiltInIcon(std::u16string_view iconName) namespace { +#if !GTK_CHECK_VERSION(4, 0, 0) +void silence_gwarning(const gchar* /*log_domain*/, + GLogLevelFlags /*log_level*/, + const gchar* /*message*/, + gpointer /*user_data*/) +{ +} +#endif + void load_ui_file(GtkBuilder* pBuilder, const OUString& rUri) { #if GTK_CHECK_VERSION(4, 0, 0) builder_add_from_gtk3_file(pBuilder, rUri); #else + guint nLogHandlerId = 0; + GLogLevelFlags nFatalMask(static_cast<GLogLevelFlags>(G_LOG_FLAG_RECURSION|G_LOG_LEVEL_ERROR)); + if (rUri.endsWith("sfx/ui/tabbarcontents.ui")) + { + // gtk unhelpfully has a bogus warning for the accelerator in this .ui because it assumes menus with accelerators + // if attached to something are attached to a MenuShell, but it's a MenuButton in this case. Turn off warnings, and + // in the case of fatal-warnings temp disable fatal warnings, for this case. + nLogHandlerId = g_log_set_handler("GLib-GObject", + static_cast<GLogLevelFlags>(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), + silence_gwarning, nullptr); + nFatalMask = g_log_set_always_fatal(nFatalMask); + } + OUString aPath; osl::FileBase::getSystemPathFromFileURL(rUri, aPath); GError *err = nullptr; auto rc = gtk_builder_add_from_file(pBuilder, OUStringToOString(aPath, RTL_TEXTENCODING_UTF8).getStr(), &err); + if (nLogHandlerId) + { + g_log_remove_handler("GLib-GObject", nLogHandlerId); + g_log_set_always_fatal(nFatalMask); + } + if (!rc) { SAL_WARN( "vcl.gtk", "GtkInstanceBuilder: error when calling gtk_builder_add_from_file: " << err->message); commit 95c4b70e752939ab329d0ccfe0e1e93a0e425af3 Author: Xisco Fauli <[email protected]> AuthorDate: Mon Aug 8 16:24:29 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:17 2022 +0200 sd: avoid divide by zero in FuZoom::MouseMove See https://crashreport.libreoffice.org/stats/signature/sd::FuZoom::MouseMove(MouseEvent%20const%20&) Change-Id: I3b07def2ba088a92e2358e7db57c27c047165cef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137988 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> (cherry picked from commit 2f5366f05bed04d805cfe469b2ea58b029167095) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137972 diff --git a/sd/source/ui/func/fuzoom.cxx b/sd/source/ui/func/fuzoom.cxx index aa5395267183..871d594d3368 100644 --- a/sd/source/ui/func/fuzoom.cxx +++ b/sd/source/ui/func/fuzoom.cxx @@ -117,10 +117,14 @@ bool FuZoom::MouseMove(const MouseEvent& rMEvt) { Size aWorkSize = mpView->GetWorkArea().GetSize(); Size aPageSize = mpView->GetSdrPageView()->GetPage()->GetSize(); - aScroll.setX( aScroll.X() / ( aWorkSize.Width() / aPageSize.Width()) ); - aScroll.setY( aScroll.Y() / ( aWorkSize.Height() / aPageSize.Height()) ); - mpViewShell->Scroll(aScroll.X(), aScroll.Y()); - aBeginPosPix = aPosPix; + if (aWorkSize.Width() != 0 && aWorkSize.Height() != 0 && + aPageSize.Width() != 0 && aPageSize.Height() != 0) + { + aScroll.setX( aScroll.X() / ( aWorkSize.Width() / aPageSize.Width()) ); + aScroll.setY( aScroll.Y() / ( aWorkSize.Height() / aPageSize.Height()) ); + mpViewShell->Scroll(aScroll.X(), aScroll.Y()); + aBeginPosPix = aPosPix; + } } } else commit 8b3de9a31931e869b08eecd3aa2d10537f551f35 Author: Christian Lohmaier <[email protected]> AuthorDate: Wed Aug 10 16:06:03 2022 +0200 Commit: Andras Timar <[email protected]> CommitDate: Sun Aug 28 14:00:16 2022 +0200 update credits Change-Id: I70c537db5dbf921de0c8b3bebf7d241f9173b705 (cherry picked from commit b099798085e7b883974928e06644a03ef98cea58) diff --git a/readlicense_oo/license/CREDITS.fodt b/readlicense_oo/license/CREDITS.fodt index 7c9b7449e0d5..0ec5b6ad16d3 100644 --- a/readlicense_oo/license/CREDITS.fodt +++ b/readlicense_oo/license/CREDITS.fodt @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <office:document xmlns:officeooo="http://openoffice.org/2009/office" 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:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns :config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d: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:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" 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="ur n:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> - <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/7.3.3.2$Linux_X86_64 LibreOffice_project/d1d0ea68f081ee2800a922cac8f79445e4603348</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="4583" meta:word-count="16992" meta:character-count="122698" meta:non-whitespace-character-count="107555"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta> + <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/7.3.5.2$Linux_X86_64 LibreOffice_project/184fe81b8c8c30d8b5082578aee2fed2ea847c01</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="4592" meta:word-count="17024" meta:character-count="122958" meta:non-whitespace-character-count="107787"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta> <office:settings> <config:config-item-set config:name="ooo:view-settings"> - <config:config-item config:name="ViewAreaTop" config:type="long">808</config:config-item> + <config:config-item config:name="ViewAreaTop" config:type="long">2152</config:config-item> <config:config-item config:name="ViewAreaLeft" config:type="long">501</config:config-item> <config:config-item config:name="ViewAreaWidth" config:type="long">32175</config:config-item> <config:config-item config:name="ViewAreaHeight" config:type="long">28180</config:config-item> @@ -16,9 +16,9 @@ <config:config-item config:name="ViewLeft" config:type="long">3649</config:config-item> <config:config-item config:name="ViewTop" config:type="long">3434</config:config-item> <config:config-item config:name="VisibleLeft" config:type="long">501</config:config-item> - <config:config-item config:name="VisibleTop" config:type="long">808</config:config-item> + <config:config-item config:name="VisibleTop" config:type="long">2152</config:config-item> <config:config-item config:name="VisibleRight" config:type="long">32674</config:config-item> - <config:config-item config:name="VisibleBottom" config:type="long">28986</config:config-item> + <config:config-item config:name="VisibleBottom" config:type="long">30330</config:config-item> <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> <config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item> <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item> @@ -97,7 +97,7 @@ </config:config-item-map-indexed> <config:config-item config:name="PrinterSetup" config:type="base64Binary"/> <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item> - <config:config-item config:name="Rsid" config:type="int">11044056</config:config-item> + <config:config-item config:name="Rsid" config:type="int">11114413</config:config-item> <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/> <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item> <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item> @@ -166,7 +166,7 @@ <office:styles> <style:default-style style:family="graphic"> <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="true"/> - <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false"> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" 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="Thorndale AMT" fo:font-size="12pt" fo:language="hu" fo:country="HU" style:letter-kerning="true" style:font-name-asian="SimSun" style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Mangal1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> @@ -350,13 +350,10 @@ <style:table-column-properties style:column-width="6.775cm"/> </style:style> <style:style style:name="Tabelle1.B" style:family="table-column"> - <style:table-column-properties style:column-width="6.749cm"/> - </style:style> - <style:style style:name="Tabelle1.C" style:family="table-column"> <style:table-column-properties style:column-width="6.219cm"/> </style:style> - <style:style style:name="Tabelle1.D" style:family="table-column"> - <style:table-column-properties style:column-width="6.907cm"/> + <style:style style:name="Tabelle1.C" style:family="table-column"> + <style:table-column-properties style:column-width="6.828cm"/> </style:style> <style:style style:name="Tabelle1.A1" style:family="table-cell"> <style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/> @@ -422,21 +419,21 @@ <style:table-properties style:width="31.752cm" table:align="left"/> </style:style> <style:style style:name="Tabelle5.A" style:family="table-column"> - <style:table-column-properties style:column-width="7.953cm"/> + <style:table-column-properties style:column-width="11.659cm"/> </style:style> <style:style style:name="Tabelle5.B" style:family="table-column"> - <style:table-column-properties style:column-width="10.754cm"/> + <style:table-column-properties style:column-width="6.731cm"/> </style:style> <style:style style:name="Tabelle5.C" style:family="table-column"> - <style:table-column-properties style:column-width="6.56cm"/> + <style:table-column-properties style:column-width="6.641cm"/> </style:style> <style:style style:name="Tabelle5.D" style:family="table-column"> - <style:table-column-properties style:column-width="6.484cm"/> + <style:table-column-properties style:column-width="6.72cm"/> </style:style> <style:style style:name="Tabelle5.A1" style:family="table-cell"> <style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/> </style:style> - <style:style style:name="Tabelle5.C690" style:family="table-cell"> + <style:style style:name="Tabelle5.D691" style:family="table-cell"> <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> </style:style> <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents"> @@ -1078,20 +1075,19 @@ </draw:frame> <text:section text:style-name="Sect1" text:name="BgContainer"> <text:p text:style-name="P16">Credits</text:p> - <text:p text:style-name="Text_20_body">1774 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2022-07-15 20:07:46.</text:p> + <text:p text:style-name="Text_20_body">1778 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2022-08-09 12:12:09.</text:p> <text:p text:style-name="Text_20_body"><text:span text:style-name="T1">*</text:span> marks developers whose first contributions happened after 2010-09-28.</text:p> <text:h text:style-name="Heading_20_2" text:outline-level="2">Developers committing code since 2010-09-28</text:h> <table:table table:name="Tabelle1" table:style-name="Tabelle1"> <table:table-column table:style-name="Tabelle1.A"/> <table:table-column table:style-name="Tabelle1.B"/> - <table:table-column table:style-name="Tabelle1.C"/> - <table:table-column table:style-name="Tabelle1.D"/> - <table:table-row table:style-name="TableLine144507568"> + <table:table-column table:style-name="Tabelle1.C" table:number-columns-repeated="2"/> + <table:table-row table:style-name="TableLine115629056"> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Ruediger Timm<text:line-break/>Commits: 82464<text:line-break/>Joined: 2000-10-10</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 33138<text:line-break/>Joined: 2000-10-10</text:p> + <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 33245<text:line-break/>Joined: 2000-10-10</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Kurt Zenker<text:line-break/>Commits: 31752<text:line-break/>Joined: 2000-09-25</text:p> @@ -1100,7 +1096,7 @@ <text:p text:style-name="Table_20_Contents">Oliver Bolte<text:line-break/>Commits: 31008<text:line-break/>Joined: 2000-09-19</text:p> </table:table-cell> </table:table-row> - <table:table-row table:style-name="TableLine144507568"> + <table:table-row table:style-name="TableLine115629056"> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Jens-Heiner Rechtien [hr]<text:line-break/>Commits: 28805<text:line-break/>Joined: 2000-09-18</text:p> </table:table-cell> @@ -1108,27 +1104,27 @@ <text:p text:style-name="Table_20_Contents">Vladimir Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 2000-12-04</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 19937<text:line-break/>Joined: 2000-10-04</text:p> + <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 19967<text:line-break/>Joined: 2000-10-04</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 16316<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 16436<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p> </table:table-cell> </table:table-row> - <table:table-row table:style-name="TableLine144507568"> + <table:table-row table:style-name="TableLine115629056"> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Ivo Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 2002-09-09</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 9073<text:line-break/>Joined: 2010-03-23</text:p> + <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 9074<text:line-break/>Joined: 2010-03-23</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 9030<text:line-break/>Joined: 2010-07-29</text:p> + <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 9060<text:line-break/>Joined: 2010-07-29</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 8002<text:line-break/>Joined: 2008-06-16</text:p> + <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 8020<text:line-break/>Joined: 2008-06-16</text:p> </table:table-cell> </table:table-row> - <table:table-row table:style-name="TableLine144507568"> + <table:table-row table:style-name="TableLine115629056"> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Kohei Yoshida<text:line-break/>Commits: 5571<text:line-break/>Joined: 2009-06-19</text:p> </table:table-cell> @@ -1136,29 +1132,29 @@ ... etc. - the rest is truncated
