android/source/src/java/org/libreoffice/LOKitTileProvider.java | 9 bin/check-elf-dynamic-objects | 9 bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx | 2 chart2/source/controller/dialogs/RangeSelectionListener.cxx | 18 chart2/source/controller/dialogs/res_ErrorBar.cxx | 11 chart2/source/controller/dialogs/tp_DataSource.cxx | 15 chart2/source/controller/dialogs/tp_RangeChooser.cxx | 13 chart2/source/controller/inc/RangeSelectionListener.hxx | 9 configure.ac | 14 cui/source/options/optaboutconfig.cxx | 2 download.lst | 4 external/curl/ExternalProject_curl.mk | 3 formula/source/core/api/FormulaCompiler.cxx | 17 include/formula/FormulaCompiler.hxx | 2 lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx | 11 offapi/com/sun/star/graphic/MediaProperties.idl | 8 officecfg/registry/schema/org/openoffice/Office/Writer.xcs | 7 package/inc/ByteGrabber.hxx | 1 package/inc/ZipFile.hxx | 22 package/inc/ZipPackage.hxx | 1 package/source/zipapi/ByteGrabber.cxx | 18 package/source/zipapi/ZipFile.cxx | 446 - package/source/zippackage/ZipPackage.cxx | 38 package/source/zippackage/zipfileaccess.cxx | 2 readlicense_oo/license/CREDITS.fodt | 4443 +++++----- sc/qa/unit/data/functions/text/fods/exact.fods | 40 sc/qa/unit/subsequent_filters_test4.cxx | 10 sc/qa/unit/ucalc.cxx | 74 sc/source/core/data/table2.cxx | 3 sc/source/core/tool/interpr1.cxx | 2 sc/source/core/tool/token.cxx | 2 sfx2/source/dialog/filedlghelper.cxx | 36 sfx2/source/dialog/filedlgimpl.hxx | 3 svl/source/items/IndexedStyleSheets.cxx | 15 sw/inc/ToxTabStopTokenHandler.hxx | 14 sw/inc/ToxTextGenerator.hxx | 3 sw/inc/doc.hxx | 3 sw/inc/fesh.hxx | 1 sw/inc/tblafmt.hxx | 1 sw/qa/core/data/ooxml/pass/tdf161139_orrick-org-min3.docx |binary sw/qa/core/doc/data/tdf160843.odt |binary sw/qa/core/doc/doc.cxx | 23 sw/qa/core/test_ToxTextGenerator.cxx | 9 sw/qa/extras/rtfexport/data/tdf160976_headerFooter.odt |binary sw/qa/extras/rtfexport/data/tdf160976_headerFooter2.odt |binary sw/qa/extras/rtfexport/data/tdf160976_headerFooter3.odt |binary sw/qa/extras/rtfexport/rtfexport8.cxx | 55 sw/qa/extras/uiwriter/uiwriter6.cxx | 2 sw/source/core/doc/docfmt.cxx | 3 sw/source/core/doc/docnew.cxx | 6 sw/source/core/doc/doctxm.cxx | 45 sw/source/core/doc/fmtcol.cxx | 7 sw/source/core/doc/tblafmt.cxx | 10 sw/source/core/doc/tblrwcl.cxx | 15 sw/source/core/docnode/ndtbl.cxx | 40 sw/source/core/frmedt/fetab.cxx | 27 sw/source/core/text/itrcrsr.cxx | 58 sw/source/core/tox/ToxTabStopTokenHandler.cxx | 64 sw/source/core/tox/ToxTextGenerator.cxx | 14 sw/source/core/txtnode/ndtxt.cxx | 5 sw/source/core/undo/untbl.cxx | 8 sw/source/filter/html/htmlforw.cxx | 8 sw/source/filter/ww8/rtfexport.cxx | 53 sw/source/filter/ww8/rtfexport.hxx | 3 sw/source/filter/ww8/ww8par.cxx | 2 sw/source/ui/fldui/fldref.cxx | 6 sw/source/ui/table/instable.cxx | 14 sw/source/ui/table/tautofmt.cxx | 19 sw/source/uibase/uiview/formatclipboard.cxx | 103 sw/source/uibase/uiview/view.cxx | 20 vcl/osx/salnsmenu.mm | 76 vcl/qa/cppunit/graphicfilter/filters-webp-test.cxx | 4 vcl/qa/cppunit/pdfexport/pdfexport.cxx | 4 vcl/source/app/salvtables.cxx | 2 vcl/source/app/weldutils.cxx | 2 vcl/source/bitmap/BitmapEx.cxx | 3 vcl/source/filter/webp/writer.cxx | 4 vcl/source/gdi/pdfwriter_impl.cxx | 12 writerfilter/source/dmapper/DomainMapper.cxx | 1 writerfilter/source/filter/WriterFilter.cxx | 1 xmlsecurity/source/dialogs/certificatechooser.cxx | 17 xmlsecurity/uiconfig/ui/selectcertificatedialog.ui | 36 82 files changed, 3562 insertions(+), 2551 deletions(-)
New commits: commit be5e7ffd7c202069508d2d2cc5ac8ed38730076e Author: Bjoern Michaelsen <[email protected]> AuthorDate: Wed Jul 31 11:30:12 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 tdf#160843: fix page count reset - SwTextFormatColl and SwTextNode: explicitly forward page count hint - add test Change-Id: Ic37bece92828f21632acff8f802d4847e820542f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171329 Reviewed-by: Michael Stahl <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> Tested-by: Jenkins (cherry picked from commit 39fd178b86608ebb0717bf15992bdf6b16d6e92a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171362 Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172110 diff --git a/sw/qa/core/doc/data/tdf160843.odt b/sw/qa/core/doc/data/tdf160843.odt new file mode 100644 index 000000000000..97f0619a433b Binary files /dev/null and b/sw/qa/core/doc/data/tdf160843.odt differ diff --git a/sw/qa/core/doc/doc.cxx b/sw/qa/core/doc/doc.cxx index b653a1cc2201..2fdd062f5c81 100644 --- a/sw/qa/core/doc/doc.cxx +++ b/sw/qa/core/doc/doc.cxx @@ -609,6 +609,29 @@ CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testSplitFlyInsertUndo) CPPUNIT_ASSERT(!rFlyFormats.empty()); } +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testVirtPageNumReset) +{ + createSwDoc("tdf160843.odt"); + auto pWrtShell = getSwDocShell()->GetWrtShell(); + sal_uInt16 nPhys = 0; + sal_uInt16 nVirt = 0; + + pWrtShell->GotoPage(1, false); + pWrtShell->GetPageNum(nPhys, nVirt, true, false); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), nPhys); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), nVirt); + + pWrtShell->GotoPage(3, false); + pWrtShell->GetPageNum(nPhys, nVirt, true, false); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(3), nPhys); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), nVirt); + + pWrtShell->GotoPage(5, false); + pWrtShell->GetPageNum(nPhys, nVirt, true, false); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(5), nPhys); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), nVirt); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/doc/fmtcol.cxx b/sw/source/core/doc/fmtcol.cxx index 4d87241a03ba..c63d28e73af4 100644 --- a/sw/source/core/doc/fmtcol.cxx +++ b/sw/source/core/doc/fmtcol.cxx @@ -132,7 +132,12 @@ void SwTextFormatColl::SwClientNotify(const SwModify& rModify, const SfxHint& rH CallSwClientNotify(rHint); return; } - if (rHint.GetId() != SfxHintId::SwLegacyModify) + else if (rHint.GetId() == SfxHintId::SwVirtPageNumHint) + { + CallSwClientNotify(rHint); + return; + } + else if (rHint.GetId() != SfxHintId::SwLegacyModify) return; auto pLegacy = static_cast<const sw::LegacyModifyHint*>(&rHint); if(GetDoc()->IsInDtor()) diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 77dbe2e0290f..c679afc618a6 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -5546,13 +5546,16 @@ void SwTextNode::SwClientNotify( const SwModify& rModify, const SfxHint& rHint ) if(rHint.GetId() == SfxHintId::SwAutoFormatUsedHint) { static_cast<const sw::AutoFormatUsedHint&>(rHint).CheckNode(this); - return; } else if (rHint.GetId() == SfxHintId::SwLegacyModify) { auto pLegacyHint = static_cast<const sw::LegacyModifyHint*>(&rHint); TriggerNodeUpdate(*pLegacyHint); } + else if (rHint.GetId() == SfxHintId::SwVirtPageNumHint) + { + CallSwClientNotify(rHint); + } else if (dynamic_cast<const SwAttrHint*>(&rHint)) { if (&rModify == GetRegisteredIn()) commit d3969d1c7857747ee66fb3b54f3730c19517955c Author: Mike Kaganski <[email protected]> AuthorDate: Sun Aug 18 16:08:12 2024 +0500 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 Add missing property to com.sun.star.graphic.MediaProperties service An omission from commit 8484e52675052848d2d3ffe07378ce2ad29fd288 "tdf#117427 missing API for determining and loading linked graphic", 2018-05-12, that introduced it. Change-Id: Ibf4c754931f813c5234daa5f7b7c907ed84efdef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172008 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins (cherry picked from commit 2a122f47dfa1b127c35838afb0ddac4e8524e400) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171993 Reviewed-by: Xisco Fauli <[email protected]> diff --git a/offapi/com/sun/star/graphic/MediaProperties.idl b/offapi/com/sun/star/graphic/MediaProperties.idl index ac1d64b96faf..c4a89393aa3c 100644 --- a/offapi/com/sun/star/graphic/MediaProperties.idl +++ b/offapi/com/sun/star/graphic/MediaProperties.idl @@ -101,6 +101,14 @@ published service MediaProperties appropriate filter module. */ [optional, property] ::com::sun::star::beans::PropertyValues FilterData; + + /** This property is only used for loading graphics + + <p>Load the graphic as an external link</p> + + @since LibreOffice 6.1 + */ + [optional, property] boolean LoadAsLink; }; } ; } ; } ; } ; commit 1af71783a96c06d8f019c6af47535054253f63a2 Author: Justin Luth <[email protected]> AuthorDate: Mon Aug 19 13:52:38 2024 -0400 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 tdf#161139: add unit test to sw filters pass make CppunitTest_sw_filters_test Change-Id: I6764dfb19ec8af12da44821bf1a55ff300780369 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172051 Reviewed-by: Justin Luth <[email protected]> Tested-by: Jenkins Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172074 diff --git a/sw/qa/core/data/ooxml/pass/tdf161139_orrick-org-min3.docx b/sw/qa/core/data/ooxml/pass/tdf161139_orrick-org-min3.docx new file mode 100644 index 000000000000..2f1634dd5480 Binary files /dev/null and b/sw/qa/core/data/ooxml/pass/tdf161139_orrick-org-min3.docx differ commit 1092312bbf7d19bcede0a76c3c395c836adc1a12 Author: Mike Kaganski <[email protected]> AuthorDate: Tue Aug 13 16:58:50 2024 +0500 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 Handle possible exceptions in SwView::ImpSetVerb This reportedly may crash on unhandled exception, with the following stack: KernelBase.dll!00007ffaa227fabc() [External Code] emboleobj.dll!OleComponent::GetVerbList() Line 1013 at D:\lombeddedobj\source\msole\olecomponent.cxx(1013) emboleobj.dll!OleEmbeddedObject::getSupportedVerbs() Line 1000 at D:\lombeddedobj\source\msole\oleembed.cxx(1000) swlo.dll!SwView::ImpSetVerb(SelectionType nSelType) Line 162 at D:\lo\sw\source\uibase\uiviewiew.cxx(162) swlo.dll!SwView::SelectShell() Line 309 at D:\lo\sw\source\uibase\uiviewiew.cxx(309) swlo.dll!SwView::AttrChangedNotify(LinkParamNone * __formal) Line 574 at D:\lo\sw\source\uibase\uiviewiew.cxx(574) [Inline Frame] swlo.dll!Link<LinkParamNone *,void>::Call(LinkParamNone *) Line 111 at D:\lo\include ools\link.hxx(111) swlo.dll!SwCursorShell::CallChgLnk() Line 2903 at D:\lo\sw\source swlo.dll!SwRootFrame::EndAllAction() Line 1941 at D:\lo\sw\source swlo.dll!UnoActionContext::~UnoActionContext() Line 212 at D:\lo\sw\source swlo.dll!SwXFrame::setPropertyValue(const rtl::OUString & rPropertyName, const com::sun::star::uno::Any & _rValue) Line 1605 at D:\lo\sw\source mscx_uno.dll!`anonymous namespace'::cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, bridges::cpp_uno::shared::VtableSlot aVtableSlot, _typelib_TypeDescriptionReference * pReturnTypeRef, long nParams, _typelib_MethodParameter * pParams, void * pUnoReturn, void * * pUnoArgs, _uno_Any * * ppUnoExc) Line 214 at D:\loridges\source mscx_uno.dll!unoInterfaceProxyDispatch(_uno_Interface * pUnoI, const _typelib_TypeDescription * pMemberTD, void * pReturn, void * * pArgs, _uno_Any * * ppException) Line 430 at D:\loridges\source binaryurplo.dll!binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny * returnValue, std::vector<binaryurp::BinaryAny,std::allocator<binaryurp::BinaryAny> > * outArguments) Line 239 at D:\loinaryurp\source\incomingrequest.cxx(239) binaryurplo.dll!binaryurp::IncomingRequest::execute() Line 79 at D:\loinaryurp\source\incomingrequest.cxx(79) binaryurplo.dll!request(void * pThreadSpecificData) Line 84 at D:\loinaryurp\source eader.cxx(84) cppu3.dll!cppu_threadpool::JobQueue::enter(const void * nDisposeId, bool bReturnWhenNoJob) Line 101 at D:\lo cppu3.dll!cppu_threadpool::ORequestThread::run() Line 169 at D:\lo cppu3.dll!threadFunc(void * param) Line 190 at D:\lo\include\osl hread.hxx(190) sal3.dll!oslWorkerWrapperFunction(void * pData) Line 67 at D:\lo\sal\osl\w32 hread.cxx(67) Change-Id: Ifef15938c7986c4179d61cfa07973ad9b13d4ad4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171823 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins (cherry picked from commit 97fa167baa062ef4d26053924527d114e0394fff) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171997 Reviewed-by: Xisco Fauli <[email protected]> (cherry picked from commit 4a972b9203d1ed5bfe8f21a71455502633ffb604) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172076 diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx index 7ed676df1aca..9efc27622c15 100644 --- a/sw/source/uibase/uiview/view.cxx +++ b/sw/source/uibase/uiview/view.cxx @@ -26,6 +26,7 @@ #include <stdlib.h> #include <hintids.hxx> +#include <comphelper/diagnose_ex.hxx> #include <comphelper/string.hxx> #include <comphelper/lok.hxx> #include <o3tl/any.hxx> @@ -150,7 +151,7 @@ SfxDispatcher &SwView::GetDispatcher() void SwView::ImpSetVerb( SelectionType nSelType ) { - bool bResetVerbs = m_bVerbsActive; + Sequence<embed::VerbDescriptor> newVerbs; if ( !GetViewFrame().GetFrame().IsInPlace() && (SelectionType::Ole|SelectionType::Graphic) & nSelType ) { @@ -159,16 +160,21 @@ void SwView::ImpSetVerb( SelectionType nSelType ) { if ( nSelType & SelectionType::Ole ) { - SetVerbs( GetWrtShell().GetOLEObject()->getSupportedVerbs() ); - m_bVerbsActive = true; - bResetVerbs = false; + try + { + newVerbs = GetWrtShell().GetOLEObject()->getSupportedVerbs(); + } + catch (css::uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("sw.ui", "Failed to retrieve supported verbs"); + } } } } - if ( bResetVerbs ) + if (m_bVerbsActive || newVerbs.hasElements()) { - SetVerbs( Sequence< embed::VerbDescriptor >() ); - m_bVerbsActive = false; + SetVerbs(newVerbs); + m_bVerbsActive = newVerbs.hasElements(); } } commit 9111b7784604abf20c13b1b5b4237ec563482dba Author: Mike Kaganski <[email protected]> AuthorDate: Mon Aug 12 16:02:27 2024 +0500 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 Another case of pointers comparison Similar to https://gerrit.libreoffice.org/c/core/+/171756, this was this way since commit 7333881bb7b04f7e4e2a28638024ae82a9c14e81 (Formula tokens, formula cells and formula interpreters to use shared strings, 2013-10-11). I don't know if this causes actual problems, but looks suspicious, and string comparison compares pointers for optimization. Change-Id: I544846b8b839606bdf2f118b87e5ea0c5961852f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171757 Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins Reviewed-by: Mike Kaganski <[email protected]> (cherry picked from commit a9577dd52d4bcf273bae4abbc8f168eab777172d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172001 Reviewed-by: Xisco Fauli <[email protected]> diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index 7e327bdac8b8..6d18bbe3a1d5 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -857,7 +857,7 @@ bool ScExternalNameToken::operator==( const FormulaToken& r ) const if (mnFileId != r.GetIndex()) return false; - return maName.getData() == r.GetString().getData(); + return maName == r.GetString(); } ScTableRefToken::ScTableRefToken( sal_uInt16 nIndex, ScTableRefToken::Item eItem ) : commit 64e35d7e92d67391a7e537dae2a6d4e600d36c71 Author: Mike Kaganski <[email protected]> AuthorDate: Mon Aug 12 15:58:24 2024 +0500 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 tdf#162439: compare strings, not pointers Change-Id: Id107eaee553531f49da4ad06c681a34cdc08e4da Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171756 Reviewed-by: Noel Grandin <[email protected]> Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins (cherry picked from commit 26931fa1ce1c22f0c54ab2916e9924b1c78f8efe) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171999 Reviewed-by: Xisco Fauli <[email protected]> diff --git a/sc/qa/unit/data/functions/text/fods/exact.fods b/sc/qa/unit/data/functions/text/fods/exact.fods index 5a97d27654ec..db69bed3dba5 100644 --- a/sc/qa/unit/data/functions/text/fods/exact.fods +++ b/sc/qa/unit/data/functions/text/fods/exact.fods @@ -2799,25 +2799,41 @@ <table:table-cell table:style-name="ce9"/> <table:table-cell table:number-columns-repeated="8"/> </table:table-row> - <table:table-row table:style-name="ro2" table:number-rows-repeated="182"> - <table:table-cell table:number-columns-repeated="2"/> - <table:table-cell table:style-name="ce6"/> - <table:table-cell table:style-name="ce11"/> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce23" table:formula="of:=EXACT(1;[.L2])" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce24" table:formula="of:=TRUE()" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce6" table:formula="of:=[.A77]=[.B77]" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce11" table:formula="of:=FORMULA([.A77])" office:value-type="string" calcext:value-type="string"/> <table:table-cell table:number-columns-repeated="6"/> <table:table-cell table:style-name="ce9"/> <table:table-cell table:number-columns-repeated="8"/> </table:table-row> - <table:table-row table:style-name="ro2" table:number-rows-repeated="4"> - <table:table-cell table:number-columns-repeated="2"/> - <table:table-cell table:style-name="ce6"/> - <table:table-cell table:style-name="ce11"/> - <table:table-cell table:number-columns-repeated="15"/> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce23" table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="2" table:formula="of:=EXACT(1;[.L2:.L3])" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce24" table:formula="of:=TRUE()" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce6" table:formula="of:=[.A78]=[.B78]" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce11" table:formula="of:=FORMULA([.A78])" office:value-type="string" calcext:value-type="string"/> + <table:table-cell table:number-columns-repeated="6"/> + <table:table-cell table:style-name="ce9"/> + <table:table-cell table:number-columns-repeated="8"/> </table:table-row> - <table:table-row table:style-name="ro2" table:number-rows-repeated="1048313"> - <table:table-cell table:number-columns-repeated="19"/> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce23" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce24" table:formula="of:=FALSE()" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce6" table:formula="of:=[.A79]=[.B79]" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce11" table:formula="of:=FORMULA([.A79])" office:value-type="string" calcext:value-type="string"/> + <table:table-cell table:number-columns-repeated="6"/> + <table:table-cell table:style-name="ce9"/> + <table:table-cell table:number-columns-repeated="8"/> </table:table-row> <table:table-row table:style-name="ro2"> - <table:table-cell table:number-columns-repeated="19"/> + <table:table-cell table:style-name="ce23" table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" table:formula="of:=EXACT(1;{1})" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce24" table:formula="of:=TRUE()" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce6" table:formula="of:=[.A80]=[.B80]" office:value-type="boolean" calcext:value-type="boolean"/> + <table:table-cell table:style-name="ce11" table:formula="of:=FORMULA([.A80])" office:value-type="string" calcext:value-type="string"/> + <table:table-cell table:number-columns-repeated="6"/> + <table:table-cell table:style-name="ce9"/> + <table:table-cell table:number-columns-repeated="8"/> </table:table-row> <calcext:conditional-formats> <calcext:conditional-format calcext:target-range-address="Sheet2.C2:Sheet2.C262"> diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 9e0f09912647..c6eabab262ea 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -10441,7 +10441,7 @@ void ScInterpreter::ScExact() { svl::SharedString s1 = GetString(); svl::SharedString s2 = GetString(); - PushInt( int(s1.getData() == s2.getData()) ); + PushInt(int(s1 == s2)); } } commit 996218bce9e6075f1e5725d7aa00dc55c36d1edc Author: Michael Stahl <[email protected]> AuthorDate: Tue Aug 13 17:59:18 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 package: ZipPackage: add additional check for entries STORED with ... data descriptor; only allow it for encrypted ODF entries, which requires reading the manifest first. Change-Id: If36d31a4cb93e7af78f48be3ed899ad9d9bb28f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171911 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit 32cad89592ec04ab552399095c91dd76afb3002c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171779 Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/package/inc/ZipPackage.hxx b/package/inc/ZipPackage.hxx index dbfbfe1bc17d..9848396dcf11 100644 --- a/package/inc/ZipPackage.hxx +++ b/package/inc/ZipPackage.hxx @@ -104,6 +104,7 @@ class ZipPackage final : public cppu::WeakImplHelper bool isLocalFile() const; + void checkZipEntriesWithDD(); void parseManifest(); void parseContentType(); void getZipFileContents(); diff --git a/package/source/zipapi/ZipFile.cxx b/package/source/zipapi/ZipFile.cxx index 7647de9707b0..12c625dab4d0 100644 --- a/package/source/zipapi/ZipFile.cxx +++ b/package/source/zipapi/ZipFile.cxx @@ -1014,7 +1014,11 @@ sal_uInt64 ZipFile::readLOC(ZipEntry &rEntry) if ((rEntry.nFlag & 0x08) != 0) { #if 0 - if (nLocMethod == STORED) // example: fdo68983.odt has this :( + // Unfortunately every encrypted ODF package entry hits this, + // because ODF requires deflated entry with value STORED and OOo/LO + // has always written compressed streams with data descriptor. + // So it is checked later in ZipPackage::checkZipEntriesWithDD() + if (nLocMethod == STORED) { SAL_INFO("package", "LOC STORED with data descriptor: \"" << rEntry.sPath << "\""); bBroken = true; @@ -1387,6 +1391,11 @@ sal_Int32 ZipFile::readCEN() if (o3tl::checked_multiply<sal_Int64>(aEntry.nOffset, -1, aEntry.nOffset)) throw ZipException("Integer-overflow"); + if (aEntry.nMethod == STORED && aEntry.nCompressedSize != aEntry.nSize) + { + throw ZipException(u"entry STORED with inconsistent size"_ustr); + } + aMemGrabber.skipBytes(nCommentLen); // unfortunately readLOC is required now to check the consistency diff --git a/package/source/zippackage/ZipPackage.cxx b/package/source/zippackage/ZipPackage.cxx index 8b24e7989480..4d206962eae3 100644 --- a/package/source/zippackage/ZipPackage.cxx +++ b/package/source/zippackage/ZipPackage.cxx @@ -165,6 +165,31 @@ bool ZipPackage::isLocalFile() const return comphelper::isFileUrl(m_aURL); } +// note: don't check for StorageFormats::ZIP, it breaks signing! +void ZipPackage::checkZipEntriesWithDD() +{ + if (!m_bForceRecovery) + { + ZipEnumeration entries{m_pZipFile->entries()}; + while (entries.hasMoreElements()) + { + ZipEntry const& rEntry{*entries.nextElement()}; + if ((rEntry.nFlag & 0x08) != 0 && rEntry.nMethod == STORED) + { + uno::Reference<XPropertySet> xStream; + getByHierarchicalName(rEntry.sPath) >>= xStream; + if (!xStream->getPropertyValue("WasEncrypted").get<bool>()) + { + SAL_INFO("package", "entry STORED with data descriptor but not encrypted: \"" << rEntry.sPath << "\""); + throw ZipIOException( + THROW_WHERE + "entry STORED with data descriptor but not encrypted"); + } + } + } + } +} + void ZipPackage::parseManifest() { if ( m_nFormat != embed::StorageFormats::PACKAGE ) @@ -419,6 +444,8 @@ void ZipPackage::parseManifest() bManifestParsed = true; } + checkZipEntriesWithDD(); // check before removing entries! + // now hide the manifest.xml file from user xMetaInfFolder->removeByName( sManifest ); } @@ -665,7 +692,10 @@ void ZipPackage::getZipFileContents() if ( m_nFormat == embed::StorageFormats::PACKAGE ) parseManifest(); else if ( m_nFormat == embed::StorageFormats::OFOPXML ) + { parseContentType(); + checkZipEntriesWithDD(); + } } void SAL_CALL ZipPackage::initialize( const uno::Sequence< Any >& aArguments ) commit 011545763de57ea6d059da6d50216a3e92720d89 Author: Michael Stahl <[email protected]> AuthorDate: Wed Aug 7 11:35:42 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 tdf#162121 sw: fix tab stop position in columned ToX There is a SvxTabAdjust::End but this only exists in the definition of index entry templates, it is not possible to set this on a tab stop on a text node. So the ToxTabStopTokenHandler converts this into a SvxTabAdjust::Right tab stop with a fixed position. DefaultToxTabStopTokenHandler::CanUseLayoutRectangle() has inverted condition but that doesn't matter because there are no layout frames at that point. (regression from commit 3aca57fb9c7c979d971cae6bb3ad73c6dc412685) The main problem is that getting the with from the layout rectangle never works because there's no layout frame, and the alternative only takes into account the page dimensions and not any margins of the section, columns, or gap between columns, not to mention that the ToX could also be in a table etc. Refactor this so that the tab stops are set only after all the layout frames are created. An unfixable problem remains in case the ToX has columns of different width. The wrong tab positions are problematic if TabOverMargin is enabled since commit 10d753b8aadb50ec4309551b97d4cf2163ea3e3d Change-Id: Ia712c9bf42b2518e396f1b9e7efd65869ebc5ab4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171585 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins (cherry picked from commit 0633189fabe85f73062ff2ce67b5f40af7d3f504) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171596 Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/sw/inc/ToxTabStopTokenHandler.hxx b/sw/inc/ToxTabStopTokenHandler.hxx index 89a74fe6e65b..29d634c67914 100644 --- a/sw/inc/ToxTabStopTokenHandler.hxx +++ b/sw/inc/ToxTabStopTokenHandler.hxx @@ -45,8 +45,11 @@ public: * and to provide the returned SvxTabStop to the attributes of the node. */ virtual HandledTabStopToken - HandleTabStopToken(const SwFormToken& aToken, const SwTextNode& targetNode, - const SwRootFrame *currentLayout) const = 0; + HandleTabStopToken(const SwFormToken& aToken, const SwTextNode& targetNode) + const = 0; + + virtual auto CalcEndStop(SwTextNode const& rNode, + SwRootFrame const* pLayout) const -> tools::Long = 0; }; /** The default implementation of ToxTabStopTokenHandler */ @@ -83,8 +86,11 @@ public: * method behaves differently when deriving the tab stop position. */ ToxTabStopTokenHandler::HandledTabStopToken - HandleTabStopToken(const SwFormToken& aToken, const SwTextNode& targetNode, - const SwRootFrame *currentLayout) const override; + HandleTabStopToken(const SwFormToken& aToken, const SwTextNode& targetNode) + const override; + + auto CalcEndStop(SwTextNode const& rNode, + SwRootFrame const* pLayout) const -> tools::Long override; private: /** Test whether the page layout can be obtained by a layout rectangle. diff --git a/sw/inc/ToxTextGenerator.hxx b/sw/inc/ToxTextGenerator.hxx index 35eefd0fb7ab..105aa9eb0660 100644 --- a/sw/inc/ToxTextGenerator.hxx +++ b/sw/inc/ToxTextGenerator.hxx @@ -26,6 +26,7 @@ #include "fmtautofmt.hxx" #include <memory> +#include <optional> #include <vector> #include <unordered_map> @@ -67,7 +68,7 @@ public: * This method will process the entries in @p entries, starting at @p indexOfEntryToProcess and * process @p numberOfEntriesToProcess entries. */ - void + std::optional<std::pair<SwTextNode *, SvxTabStopItem>> GenerateText(SwDoc *doc, std::unordered_map<OUString, int> & rMarkURLs, const std::vector<std::unique_ptr<SwTOXSortTabBase>>& entries, diff --git a/sw/qa/core/test_ToxTextGenerator.cxx b/sw/qa/core/test_ToxTextGenerator.cxx index c0b667a27334..bc21e3de19e2 100644 --- a/sw/qa/core/test_ToxTextGenerator.cxx +++ b/sw/qa/core/test_ToxTextGenerator.cxx @@ -113,10 +113,15 @@ namespace { class MockedToxTabStopTokenHandler : public ToxTabStopTokenHandler { public: virtual HandledTabStopToken - HandleTabStopToken(const SwFormToken&, const SwTextNode&, - const SwRootFrame *) const override { + HandleTabStopToken(const SwFormToken&, const SwTextNode&) const override + { return HandledTabStopToken(); } + + auto CalcEndStop(SwTextNode const&, SwRootFrame const*) const -> tools::Long override + { + return 0; + } }; class ToxTextGeneratorWithMockedChapterField : public ToxTextGenerator { diff --git a/sw/qa/extras/uiwriter/uiwriter6.cxx b/sw/qa/extras/uiwriter/uiwriter6.cxx index c9f4f5d5acd4..5a666501d3cb 100644 --- a/sw/qa/extras/uiwriter/uiwriter6.cxx +++ b/sw/qa/extras/uiwriter/uiwriter6.cxx @@ -2194,7 +2194,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf116403) CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aTabs.getLength()); // This was still 17000, refreshing ToX didn't take borders spacings and widths into account CPPUNIT_ASSERT_EQUAL_MESSAGE("Page borders must be considered for right-aligned tabstop", - static_cast<sal_Int32>(17000 - 2 * 500 - 2 * 1), + static_cast<sal_Int32>(17000 - 2 * 500 - 2 * 1 - 1), aTabs[0].Position); } diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx index f9533b37f647..a0ea88ec1936 100644 --- a/sw/source/core/doc/doctxm.cxx +++ b/sw/source/core/doc/doctxm.cxx @@ -1067,6 +1067,13 @@ void SwTOXBaseSection::Update(const SfxItemSet* pAttr, // Sort the List of all TOC Marks and TOC Sections std::vector<SwTextFormatColl*> aCollArr( GetTOXForm().GetFormMax(), nullptr ); std::unordered_map<OUString, int> markURLs; + std::vector<std::pair<SwTextNode *, SvxTabStopItem>> tabStops; + std::shared_ptr<sw::ToxTabStopTokenHandler> const pTabStopTokenHandler = + std::make_shared<sw::DefaultToxTabStopTokenHandler>( + pSectNd->GetIndex(), *pDefaultPageDesc, GetTOXForm().IsRelTabPos(), + rDoc.GetDocumentSettingManager().get(DocumentSettingId::TABS_RELATIVE_TO_INDENT) + ? sw::DefaultToxTabStopTokenHandler::TABSTOPS_RELATIVE_TO_INDENT + : sw::DefaultToxTabStopTokenHandler::TABSTOPS_RELATIVE_TO_PAGE); SwNodeIndex aInsPos( *pFirstEmptyNd, 1 ); for( size_t nCnt = 0; nCnt < m_aSortArr.size(); ++nCnt ) { @@ -1081,7 +1088,6 @@ void SwTOXBaseSection::Update(const SfxItemSet* pAttr, aCollArr[ nLvl ] = pColl; } - // Generate: Set dynamic TabStops SwTextNode* pTOXNd = rDoc.GetNodes().MakeTextNode( aInsPos.GetNode() , pColl ); m_aSortArr[ nCnt ]->pTOXNd = pTOXNd; @@ -1112,14 +1118,13 @@ void SwTOXBaseSection::Update(const SfxItemSet* pAttr, // to method <GenerateText(..)>. ::SetProgressState( 0, rDoc.GetDocShell() ); - std::shared_ptr<sw::ToxTabStopTokenHandler> tabStopTokenHandler = - std::make_shared<sw::DefaultToxTabStopTokenHandler>( - pSectNd->GetIndex(), *pDefaultPageDesc, GetTOXForm().IsRelTabPos(), - rDoc.GetDocumentSettingManager().get(DocumentSettingId::TABS_RELATIVE_TO_INDENT) ? - sw::DefaultToxTabStopTokenHandler::TABSTOPS_RELATIVE_TO_INDENT : - sw::DefaultToxTabStopTokenHandler::TABSTOPS_RELATIVE_TO_PAGE); - sw::ToxTextGenerator ttgn(GetTOXForm(), tabStopTokenHandler); - ttgn.GenerateText(GetFormat()->GetDoc(), markURLs, m_aSortArr, nCnt, nRange, pLayout); + sw::ToxTextGenerator ttgn(GetTOXForm(), pTabStopTokenHandler); + std::optional<std::pair<SwTextNode *, SvxTabStopItem>> const oTabStops = + ttgn.GenerateText(GetFormat()->GetDoc(), markURLs, m_aSortArr, nCnt, nRange, pLayout); + if (oTabStops) + { + tabStops.emplace_back(*oTabStops); + } nCnt += nRange - 1; } @@ -1157,6 +1162,28 @@ void SwTOXBaseSection::Update(const SfxItemSet* pAttr, { SwFrame::CheckPageDescs( static_cast<SwPageFrame*>(rpLayout->Lower()) ); } + // delay setting tab stops until the layout frames exist, in case the ToX + // is in columns or other non-body environment; best way is to check uppers + // (what if columns have different widths? no idea what to do about that...) + for (auto & it : tabStops) + { + std::vector<SvxTabStop> tabs; + for (size_t i = 0; i < it.second.Count(); ++i) + { + tabs.emplace_back(it.second.At(i)); + } + it.second.Remove(0, it.second.Count()); + for (SvxTabStop & rTab : tabs) + { + if (rTab.GetAdjustment() == SvxTabAdjust::Right) + { + assert(rTab.GetTabPos() == 0); + rTab.GetTabPos() = pTabStopTokenHandler->CalcEndStop(*it.first, pLayout); + } + it.second.Insert(rTab); + } + it.first->SetAttr(it.second); + } SetProtect( SwTOXBase::IsProtected() ); } diff --git a/sw/source/core/tox/ToxTabStopTokenHandler.cxx b/sw/source/core/tox/ToxTabStopTokenHandler.cxx index b3943d6e5393..2cdcc358c971 100644 --- a/sw/source/core/tox/ToxTabStopTokenHandler.cxx +++ b/sw/source/core/tox/ToxTabStopTokenHandler.cxx @@ -18,6 +18,7 @@ #include <fmtpdsc.hxx> #include <frmfmt.hxx> #include <frmatr.hxx> +#include <frmtool.hxx> #include <ndtxt.hxx> #include <pagedesc.hxx> #include <pagefrm.hxx> @@ -40,7 +41,7 @@ DefaultToxTabStopTokenHandler::DefaultToxTabStopTokenHandler(SwNodeOffset indexO ToxTabStopTokenHandler::HandledTabStopToken DefaultToxTabStopTokenHandler::HandleTabStopToken( - const SwFormToken& aToken, const SwTextNode& targetNode, const SwRootFrame *currentLayout) const + const SwFormToken& aToken, const SwTextNode& targetNode) const { HandledTabStopToken result; @@ -61,29 +62,62 @@ DefaultToxTabStopTokenHandler::HandleTabStopToken( return result; } - SwRect aNdRect; - if (CanUseLayoutRectangle(targetNode, currentLayout)) { - aNdRect = targetNode.FindLayoutRect(true); - } + // note: this will be filled later by CalcEndStop() + result.tabStop = SvxTabStop(0, SvxTabAdjust::Right, cDfltDecimalChar, aToken.cTabFillChar); + return result; +} + +auto DefaultToxTabStopTokenHandler::CalcEndStop(SwTextNode const& rNode, + SwRootFrame const*const pLayout) const -> tools::Long +{ tools::Long nRightMargin; - if (aNdRect.IsEmpty()) { - nRightMargin = CalculatePageMarginFromPageDescription(targetNode); - } else { - nRightMargin = aNdRect.Width(); + if (CanUseLayoutRectangle(rNode, pLayout)) + { + // in case it's in a header, any frame should do + SwContentFrame const*const pFrame(rNode.getLayoutFrame(pLayout)); + assert(pFrame); // created in SwTOXBaseSection::Update() + SwRectFnSet const fnRect(pFrame->GetUpper()); + SwRect rect = pFrame->getFramePrintArea(); + if (fnRect.GetWidth(rect) == 0) // typically it's newly created + { + if (pFrame->GetUpper()->IsSctFrame()) + { // this is set in SwSectionFrame::Init() + rect = pFrame->GetUpper()->GetUpper()->getFramePrintArea(); + assert(fnRect.GetWidth(rect) != 0); + } + else if (pFrame->GetUpper()->IsColBodyFrame()) + { + SwFrame const*const pColFrame(pFrame->GetUpper()->GetUpper()); + assert(pColFrame->IsColumnFrame()); + rect = pColFrame->getFrameArea(); + // getFramePrintArea() is not valid yet, manually subtract... + // (it can have a border too!) + SwBorderAttrAccess access(SwFrame::GetCache(), pColFrame); + SwBorderAttrs const& rAttrs(*access.Get()); + auto const nLeft(rAttrs.CalcLeft(pColFrame)); + auto const nRight(rAttrs.CalcRight(pColFrame)); + fnRect.SetWidth(rect, fnRect.GetWidth(rect) - nLeft - nRight); + assert(fnRect.GetWidth(rect) != 0); + } + else assert(false); + } + nRightMargin = fnRect.GetWidth(rect); + } + else + { + nRightMargin = CalculatePageMarginFromPageDescription(rNode); } //#i24363# tab stops relative to indent if (mTabStopReferencePolicy == TABSTOPS_RELATIVE_TO_INDENT) { // left margin of paragraph style SvxFirstLineIndentItem const& rFirstLine( - targetNode.GetTextColl()->GetFirstLineIndent()); + rNode.GetTextColl()->GetFirstLineIndent()); SvxTextLeftMarginItem const& rTextLeftMargin( - targetNode.GetTextColl()->GetTextLeftMargin()); + rNode.GetTextColl()->GetTextLeftMargin()); nRightMargin -= rTextLeftMargin.GetLeft(rFirstLine); nRightMargin -= rFirstLine.GetTextFirstLineOffset(); } - - result.tabStop = SvxTabStop(nRightMargin, SvxTabAdjust::Right, cDfltDecimalChar, aToken.cTabFillChar); - return result; + return nRightMargin - 1; // subtract 1 twip to avoid equal for TabOverMargin } tools::Long @@ -113,7 +147,7 @@ DefaultToxTabStopTokenHandler::CanUseLayoutRectangle(const SwTextNode& targetNod targetNode.SwContentNode::GetAttr(RES_PAGEDESC).GetPageDesc(); if (!pageDescription) { - return false; + return true; } const SwFrame* pFrame = targetNode.getLayoutFrame(currentLayout); if (!pFrame) { diff --git a/sw/source/core/tox/ToxTextGenerator.cxx b/sw/source/core/tox/ToxTextGenerator.cxx index 158cc0c72bc7..32d18d1c8087 100644 --- a/sw/source/core/tox/ToxTextGenerator.cxx +++ b/sw/source/core/tox/ToxTextGenerator.cxx @@ -165,15 +165,14 @@ ToxTextGenerator::GenerateTextForChapterToken(const SwFormToken& chapterToken, c return retval; } -// Add parameter <_TOXSectNdIdx> and <_pDefaultPageDesc> in order to control, -// which page description is used, no appropriate one is found. -void +std::optional<std::pair<SwTextNode *, SvxTabStopItem>> ToxTextGenerator::GenerateText(SwDoc* pDoc, std::unordered_map<OUString, int> & rMarkURLs, const std::vector<std::unique_ptr<SwTOXSortTabBase>> &entries, sal_uInt16 indexOfEntryToProcess, sal_uInt16 numberOfEntriesToProcess, SwRootFrame const*const pLayout) { + std::optional<std::pair<SwTextNode *, SvxTabStopItem>> oRet; // pTOXNd is only set at the first mark SwTextNode* pTOXNd = const_cast<SwTextNode*>(entries.at(indexOfEntryToProcess)->pTOXNd); // FIXME this operates directly on the node text @@ -188,7 +187,7 @@ ToxTextGenerator::GenerateText(SwDoc* pDoc, sal_uInt16 nLvl = rBase.GetLevel(); OSL_ENSURE( nLvl < mToxForm.GetFormMax(), "invalid FORM_LEVEL"); - SvxTabStopItem aTStops( 0, 0, SvxTabAdjust::Default, RES_PARATR_TABSTOP ); + oRet.emplace(pTOXNd, SvxTabStopItem(0, 0, SvxTabAdjust::Default, RES_PARATR_TABSTOP)); // create an enumerator // #i21237# SwFormTokens aPattern = mToxForm.GetPattern(nLvl); @@ -228,9 +227,9 @@ ToxTextGenerator::GenerateText(SwDoc* pDoc, case TOKEN_TAB_STOP: { ToxTabStopTokenHandler::HandledTabStopToken htst = - mTabStopTokenHandler->HandleTabStopToken(aToken, *pTOXNd, pDoc->getIDocumentLayoutAccess().GetCurrentLayout()); + mTabStopTokenHandler->HandleTabStopToken(aToken, *pTOXNd); rText += htst.text; - aTStops.Insert(htst.tabStop); + oRet->second.Insert(htst.tabStop); break; } @@ -304,10 +303,9 @@ ToxTextGenerator::GenerateText(SwDoc* pDoc, } } } - - pTOXNd->SetAttr( aTStops ); } mLinkProcessor->InsertLinkAttributes(*pTOXNd); + return oRet; } /*static*/ std::shared_ptr<SfxItemSet> commit fab6f878aed72c250eaea474cf12befc4ff29cc3 Author: Patrick Luby <[email protected]> AuthorDate: Wed Aug 7 19:51:57 2024 -0400 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 tdf#140061 keep SwCharFormat instances alive while SwDoc is alive Change-Id: I22a7fc1e109e641932f348e9ac3b85f11ce46c9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171608 Reviewed-by: Patrick Luby <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> Tested-by: Jenkins (cherry picked from commit 7b7347bb2112d89b2ad463a464cabe0c8926e0d0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171677 Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx index b5028561fb66..17f0ce4ea36f 100644 --- a/sw/inc/doc.hxx +++ b/sw/inc/doc.hxx @@ -248,6 +248,7 @@ class SW_DLLPUBLIC SwDoc final std::unique_ptr<sw::FrameFormats<SwFrameFormat*>> mpFrameFormatTable; //< Format table std::unique_ptr<SwCharFormats> mpCharFormatTable; + std::unique_ptr<SwCharFormats> mpCharFormatDeletionTable; std::unique_ptr<sw::FrameFormats<sw::SpzFrameFormat*>> mpSpzFrameFormatTable; std::unique_ptr<SwSectionFormats> mpSectionFormatTable; std::unique_ptr<sw::TableFrameFormats> mpTableFrameFormatTable; //< For tables diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index 3390a506052c..755ee2541fde 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -691,7 +691,8 @@ void SwDoc::DelCharFormat(size_t nFormat, bool bBroadcast) std::make_unique<SwUndoCharFormatDelete>(pDel, *this)); } - delete (*mpCharFormatTable)[nFormat]; + // tdf#140061 keep SwCharFormat instances alive while SwDoc is alive + mpCharFormatDeletionTable->insert(pDel); mpCharFormatTable->erase(mpCharFormatTable->begin() + nFormat); getIDocumentState().SetModified(); diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index bb0cd32d2c19..1a1684ae46b1 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -234,6 +234,7 @@ SwDoc::SwDoc() mpDfltGrfFormatColl( new SwGrfFormatColl( GetAttrPool(), "Graphikformatvorlage" ) ), mpFrameFormatTable( new sw::FrameFormats<SwFrameFormat*>() ), mpCharFormatTable( new SwCharFormats ), + mpCharFormatDeletionTable( new SwCharFormats ), mpSpzFrameFormatTable( new sw::FrameFormats<sw::SpzFrameFormat*>() ), mpSectionFormatTable( new SwSectionFormats ), mpTableFrameFormatTable( new sw::TableFrameFormats() ), @@ -592,6 +593,10 @@ SwDoc::~SwDoc() mpStyleAccess.reset(); mpCharFormatTable.reset(); + // tdf#140061 keep SwCharFormat instances alive while SwDoc is alive + if (mpCharFormatDeletionTable) + mpCharFormatDeletionTable->DeleteAndDestroyAll(/*keepDefault*/false); + mpCharFormatDeletionTable.reset(); mpSectionFormatTable.reset(); mpTableFrameFormatTable.reset(); mpDfltTextFormatColl.reset(); @@ -746,6 +751,7 @@ void SwDoc::ClearDoc() mpTextFormatCollTable->DeleteAndDestroy(1, mpTextFormatCollTable->size()); mpGrfFormatCollTable->DeleteAndDestroy(1, mpGrfFormatCollTable->size()); mpCharFormatTable->DeleteAndDestroyAll(/*keepDefault*/true); + mpCharFormatDeletionTable->DeleteAndDestroyAll(/*keepDefault*/false); if( getIDocumentLayoutAccess().GetCurrentViewShell() ) { commit babcaf0e6b8dfefe9058502324ccff1f23afe309 Author: Rene Engelhard <[email protected]> AuthorDate: Thu Aug 8 17:36:14 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 fix build on armhf with gcc 14 /uno2cpp.cxx: In function ‘void {anonymous}::callVirtualMethod(void*, sal_Int32, void*, typelib_TypeDescriptionReference*, sal_uInt32*, sal_uInt32, sal_uInt32*, sal_uInt32, double*)’: /<<PKGBUILDDIR>>/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx:278:5: error: ‘asm’ operand has impossible constraints or there are not enough registers 278 | __asm__ __volatile__ ( | ^~~~~~~ make[2]: *** [/<<PKGBUILDDIR>>/solenv/gbuild/LinkTarget.mk:338: /<<PKGBUILDDIR>>/workdir/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.o] Error 1 Just removing them makes it work, they are mentioned before anyway, too (thanks Caolan) Change-Id: Ibb9118b268a587ebdcfce343e2ee2605ac979915 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171650 Tested-by: Caolán McNamara <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> (cherry picked from commit d9e818f3d706145aba95587d685cbcfdeb797edb) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171668 Tested-by: Jenkins diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx index 001384e005fc..e08ec4ad8f85 100644 --- a/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx @@ -298,7 +298,7 @@ void callVirtualMethod( "mov %[r1], r1 " : [r0]"=r" (r0), [r1]"=r" (r1) : [pmethod]"m" (pMethod), [pgpr]"m" (pGPR), [pfpr]"m" (pFPR) - : "r0", "r1", "r2", "r3", "r4", "r5"); + : "r2", "r3", "r4", "r5"); MapReturn(r0, r1, pReturnType, static_cast<sal_uInt32*>(pRegisterReturn)); } commit 1e87d4fc9973a0b272e2ad3699da541e5b1e8b28 Author: Xisco Fauli <[email protected]> AuthorDate: Tue Jul 30 14:05:32 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 tdf#156689: don't initialize the last columns from the default attributes Regression from dd8e061406fac581d399da088c7f0187278035dc "tdf#153437 sc: fix broken formatting without performance regression" Change-Id: Ifacc48db93f28ec7b539af640e95eff8ad5ec535 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171242 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> (cherry picked from commit e552de24b646f8dc59551203edd901dad6af0ff5) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171200 Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 3f9acb979163..2665ba3cec52 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -227,6 +227,80 @@ CPPUNIT_TEST_FIXTURE(Test, testSharedStringPool) m_pDoc->DeleteTab(0); } +CPPUNIT_TEST_FIXTURE(Test, testBackgroundColorDeleteColumn) +{ + m_pDoc->InsertTab(0, u"Table1"_ustr); + + ScMarkData aMark(m_pDoc->GetSheetLimits()); + + // Set Values to B1, C2, D5 + m_pDoc->SetValue(ScAddress(1, 0, 0), 1.0); // B1 + m_pDoc->SetValue(ScAddress(2, 1, 0), 2.0); // C2 + m_pDoc->SetValue(ScAddress(3, 4, 0), 3.0); // D5 + + // Add patterns + ScPatternAttr aCellBlueColor(m_pDoc->GetPool()); + aCellBlueColor.GetItemSet().Put(SvxBrushItem(COL_BLUE, ATTR_BACKGROUND)); + m_pDoc->ApplyPatternAreaTab(3, 0, 3, m_pDoc->MaxRow(), 0, aCellBlueColor); + + // Delete column 10 + m_pDoc->DeleteCol(ScRange(9,0,0,9,m_pDoc->MaxRow(),0)); + + // Check patterns + const SfxPoolItem* pItem = nullptr; + m_pDoc->GetPattern(ScAddress(3, 1000, 0))->GetItemSet().HasItem(ATTR_BACKGROUND, &pItem); + CPPUNIT_ASSERT(pItem); + CPPUNIT_ASSERT_EQUAL(COL_BLUE, static_cast<const SvxBrushItem*>(pItem)->GetColor()); + + // Delete column 2 + m_pDoc->DeleteCol(ScRange(1,0,0,1,m_pDoc->MaxRow(),0)); + + // Check patterns + pItem = nullptr; + m_pDoc->GetPattern(ScAddress(2, 1000, 0))->GetItemSet().HasItem(ATTR_BACKGROUND, &pItem); + CPPUNIT_ASSERT(pItem); + CPPUNIT_ASSERT_EQUAL(COL_BLUE, static_cast<const SvxBrushItem*>(pItem)->GetColor()); + + m_pDoc->DeleteTab(0); +} + +CPPUNIT_TEST_FIXTURE(Test, testBackgroundColorDeleteRow) +{ + m_pDoc->InsertTab(0, u"Table1"_ustr); + + ScMarkData aMark(m_pDoc->GetSheetLimits()); + + // Set Values to B1, C2, D5 + m_pDoc->SetValue(ScAddress(1, 0, 0), 1.0); // B1 + m_pDoc->SetValue(ScAddress(2, 1, 0), 2.0); // C2 + m_pDoc->SetValue(ScAddress(3, 4, 0), 3.0); // D5 + + // Add patterns + ScPatternAttr aCellBlueColor(m_pDoc->GetPool()); + aCellBlueColor.GetItemSet().Put(SvxBrushItem(COL_BLUE, ATTR_BACKGROUND)); + m_pDoc->ApplyPatternAreaTab(0, 3, m_pDoc->MaxCol(), 3, 0, aCellBlueColor); + + // Delete row 10 + m_pDoc->DeleteRow(ScRange(0,9,0,m_pDoc->MaxCol(),9,0)); + + // Check patterns + const SfxPoolItem* pItem = nullptr; + m_pDoc->GetPattern(ScAddress(1000, 3, 0))->GetItemSet().HasItem(ATTR_BACKGROUND, &pItem); + CPPUNIT_ASSERT(pItem); + CPPUNIT_ASSERT_EQUAL(COL_BLUE, static_cast<const SvxBrushItem*>(pItem)->GetColor()); + + // Delete row 2 + m_pDoc->DeleteRow(ScRange(0,1,0,m_pDoc->MaxCol(),1,0)); + + // Check patterns + pItem = nullptr; + m_pDoc->GetPattern(ScAddress(1000, 2, 0))->GetItemSet().HasItem(ATTR_BACKGROUND, &pItem); + CPPUNIT_ASSERT(pItem); + CPPUNIT_ASSERT_EQUAL(COL_BLUE, static_cast<const SvxBrushItem*>(pItem)->GetColor()); + + m_pDoc->DeleteTab(0); +} + CPPUNIT_TEST_FIXTURE(Test, testSharedStringPoolUndoDoc) { struct diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 7f2933529a8a..db31b75e3bf9 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -400,9 +400,6 @@ void ScTable::DeleteCol( { for (SCCOL nCol = nStartCol + nSize; nCol < aCol.size(); ++nCol) aCol[nCol].SwapCol(aCol[nCol - nSize]); - // When delete column(s), initialize the last columns from the default attributes - for (SCCOL nCol = aCol.size() < static_cast<SCCOL>(nSize) ? 0 : aCol.size() - nSize; nCol < aCol.size(); ++nCol) - aCol[nCol].Init(nCol, aCol[nCol].GetTab(), rDocument, false); } else { commit 6873dfaba18388550b17930dfb72c9fd1a6299b9 Author: Christian Lohmaier <[email protected]> AuthorDate: Thu Aug 8 22:54:24 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Fri Aug 23 11:17:13 2024 +0200 update credits Change-Id: I5619e8dcc9670ea09f6f27bc15a5b248e83378d9 (cherry picked from commit 8632088f95050cea4b44b519d04466bb7a98ebac) diff --git a/readlicense_oo/license/CREDITS.fodt b/readlicense_oo/license/CREDITS.fodt index 2b36596b6033..6b51bbaca007 100644 --- a/readlicense_oo/license/CREDITS.fodt +++ b/readlicense_oo/license/CREDITS.fodt @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <office:document 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://openoffice.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:c alcext="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:xmlns: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.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/24.2.4.2$Linux_X86_64 LibreOffice_project/51a6219feb6075d9a4c46691dcfe0cd9c4fff3c2</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="4949" meta:word-count="18519" meta:character-count="134125" meta:non-whitespace-character-count="117661"/><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/24.2.4.2$Linux_X86_64 LibreOffice_project/51a6219feb6075d9a4c46691dcfe0cd9c4fff3c2</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="4959" meta:word-count="18558" meta:character-count="134395" meta:non-whitespace-character-count="117897"/><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">635</config:config-item> + <config:config-item config:name="ViewAreaTop" config:type="long">2588</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">55167</config:config-item> - <config:config-item config:name="ViewAreaHeight" config:type="long">26963</config:config-item> + <config:config-item config:name="ViewAreaWidth" config:type="long">38313</config:config-item> + <config:config-item config:name="ViewAreaHeight" config:type="long">26090</config:config-item> <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item> <config:config-item config:name="InBrowseMode" config:type="boolean">true</config:config-item> <config:config-item-map-indexed config:name="Views"> @@ -16,9 +16,9 @@ <config:config-item config:name="ViewLeft" config:type="long">3623</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">635</config:config-item> - <config:config-item config:name="VisibleRight" config:type="long">55667</config:config-item> - <config:config-item config:name="VisibleBottom" config:type="long">27596</config:config-item> + <config:config-item config:name="VisibleTop" config:type="long">2588</config:config-item> + <config:config-item config:name="VisibleRight" config:type="long">38813</config:config-item> + <config:config-item config:name="VisibleBottom" config:type="long">28676</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> @@ -147,7 +147,7 @@ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item> <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/> <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item> - <config:config-item config:name="Rsid" config:type="int">13654134</config:config-item> + <config:config-item config:name="Rsid" config:type="int">13750073</config:config-item> <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item> <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item> <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item> @@ -177,7 +177,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:writing-mode="lr-tb" style:flow-with-text="true"/> - <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false"> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" 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"/> @@ -371,20 +371,26 @@ </office:styles> <office:automatic-styles> <style:style style:name="Tabelle1" style:family="table"> - <style:table-properties style:width="25.963cm" table:align="left"/> + <style:table-properties style:width="26.28cm" table:align="left"/> </style:style> <style:style style:name="Tabelle1.A" style:family="table-column"> - <style:table-column-properties style:column-width="6.828cm"/> + <style:table-column-properties style:column-width="6.669cm"/> </style:style> <style:style style:name="Tabelle1.B" style:family="table-column"> - <style:table-column-properties style:column-width="6.219cm"/> + <style:table-column-properties style:column-width="6.696cm"/> </style:style> <style:style style:name="Tabelle1.C" style:family="table-column"> - <style:table-column-properties style:column-width="6.696cm"/> + <style:table-column-properties style:column-width="6.034cm"/> + </style:style> + <style:style style:name="Tabelle1.D" style:family="table-column"> + <style:table-column-properties style:column-width="6.881cm"/> </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"/> </style:style> + <style:style style:name="Tabelle1.B463" style:family="table-cell"> + <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> + </style:style> <style:style style:name="Tabelle2" style:family="table"> <style:table-properties style:width="18.078cm" table:align="left"/> </style:style> @@ -449,21 +455,21 @@ <style:table-properties style:width="32.683cm" table:align="left"/> </style:style> <style:style style:name="Tabelle5.A" style:family="table-column"> - <style:table-column-properties style:column-width="6.722cm"/> + <style:table-column-properties style:column-width="11.723cm"/> </style:style> <style:style style:name="Tabelle5.B" style:family="table-column"> - <style:table-column-properties style:column-width="6.219cm"/> + <style:table-column-properties style:column-width="7.966cm"/> </style:style> <style:style style:name="Tabelle5.C" style:family="table-column"> - <style:table-column-properties style:column-width="11.696cm"/> + <style:table-column-properties style:column-width="6.696cm"/> </style:style> <style:style style:name="Tabelle5.D" style:family="table-column"> - <style:table-column-properties style:column-width="8.045cm"/> + <style:table-column-properties style:column-width="6.299cm"/> </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.C730" style:family="table-cell"> + <style:style style:name="Tabelle5.D731" 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"> @@ -1161,20 +1167,20 @@ </draw:frame> <text:section text:style-name="Sect1" text:name="BgContainer"> <text:p text:style-name="P32">Credits</text:p> - <text:p text:style-name="Text_20_body">1974 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2024-07-10 13:20:35.</text:p> + <text:p text:style-name="Text_20_body">1979 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2024-08-08 18:06:26.</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.B"/> + <table:table-column table:style-name="Tabelle1.D"/> <table:table-row> <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: 35643<text:line-break/>Joined: 2000-10-10</text:p> + <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 35763<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> @@ -1191,15 +1197,15 @@ <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: 21231<text:line-break/>Joined: 2000-10-04</text:p> + <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 21271<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: 18998<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: 19083<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: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: 10002<text:line-break/>Joined: 2010-07-29</text:p> + <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 10023<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">Ivo Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 2002-09-09</text:p> @@ -1208,7 +1214,7 @@ <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 9160<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">Michael Stahl<text:line-break/>Commits: 8522<text:line-break/>Joined: 2008-06-16</text:p> + <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 8538<text:line-break/>Joined: 2008-06-16</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1216,7 +1222,7 @@ <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> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 5359<text:line-break/>Joined: 2000-10-11</text:p> + <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 5367<text:line-break/>Joined: 2000-10-11</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>Markus Mohrhard<text:line-break/>Commits: 5203<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-17</text:span></text:p> @@ -1227,30 +1233,30 @@ </table:table-row> <table:table-row> <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>Andrea Gelmini<text:line-break/>Commits: 4090<text:line-break/>Joined: <text:span text:style-name="T2">2014-10-30</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 4143<text:line-break/>Joined: <text:span text:style-name="T2">2014-10-30</text:span></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>Julien Nabet<text:line-break/>Commits: 3903<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 3913<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></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">David Tardon<text:line-break/>Commits: 3648<text:line-break/>Joined: 2009-11-12</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>Tomaž Vajngerl<text:line-break/>Commits: 3533<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 3537<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> <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>Mike Kaganski<text:line-break/>Commits: 3480<text:line-break/>Joined: <text:span text:style-name="T2">2015-04-26</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 3535<text:line-break/>Joined: <text:span text:style-name="T2">2015-04-26</text:span></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">Luboš Luňák<text:line-break/>Commits: 3201<text:line-break/>Joined: 2010-09-21</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">Hans-Joachim Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 2000-09-19</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 3031<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-06</text:span></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>Xisco Fauli<text:line-break/>Commits: 2986<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-06</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Hans-Joachim Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 2000-09-19</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1261,7 +1267,7 @@ <text:p text:style-name="Table_20_Contents">Jan Holesovsky<text:line-break/>Commits: 2672<text:line-break/>Joined: 2009-06-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">Oliver Specht<text:line-break/>Commits: 2605<text:line-break/>Joined: 2000-09-21</text:p> + <text:p text:style-name="Table_20_Contents">Oliver Specht<text:line-break/>Commits: 2615<text:line-break/>Joined: 2000-09-21</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">Mathias Bauer<text:line-break/>Commits: 2580<text:line-break/>Joined: 2000-09-20</text:p> @@ -1269,10 +1275,10 @@ </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2515<text:line-break/>Joined: 2004-08-05</text:p> + <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2520<text:line-break/>Joined: 2004-08-05</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">Bjoern Michaelsen<text:line-break/>Commits: 2493<text:line-break/>Joined: 2009-10-14</text:p> + <text:p text:style-name="Table_20_Contents">Bjoern Michaelsen<text:line-break/>Commits: 2500<text:line-break/>Joined: 2009-10-14</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>Norbert Thiebaud<text:line-break/>Commits: 2176<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-29</text:span></text:p> @@ -1283,7 +1289,7 @@ </table:table-row> <table:table-row> <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>Olivier Hallot<text:line-break/>Commits: 2142<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-25</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits: 2156<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-25</text:span></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">Philipp Lohmann [pl]<text:line-break/>Commits: 2089<text:line-break/>Joined: 2000-09-21</text:p> @@ -1297,10 +1303,10 @@ </table:table-row> <table:table-row> <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>Matúš Kukan<text:line-break/>Commits: 1712<text:line-break/>Joined: <text:span text:style-name="T2">2011-04-06</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Armin Le Grand (Collabora)<text:line-break/>Commits: 1725<text:line-break/>Joined: 2000-09-25</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">Armin Le Grand (allotropia)<text:line-break/>Commits: 1705<text:line-break/>Joined: 2000-09-25</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matúš Kukan<text:line-break/>Commits: 1712<text:line-break/>Joined: <text:span text:style-name="T2">2011-04-06</text:span></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>Takeshi Abe<text:line-break/>Commits: 1486<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-08</text:span></text:p> @@ -1317,29 +1323,29 @@ <text:p text:style-name="Table_20_Contents">Thorsten Behrens<text:line-break/>Commits: 1442<text:line-break/>Joined: 2001-04-25</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">Fridrich Štrba<text:line-break/>Commits: 1339<text:line-break/>Joined: 2007-02-22</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Michael Weghorn<text:line-break/>Commits: 1362<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-10</text:span></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>Samuel Mehrbrodt<text:line-break/>Commits: 1326<text:line-break/>Joined: <text:span text:style-name="T2">2011-06-08</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Fridrich Štrba<text:line-break/>Commits: 1340<text:line-break/>Joined: 2007-02-22</text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Thomas Lange [tl]<text:line-break/>Commits: 1310<text:line-break/>Joined: 2000-09-22</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Samuel Mehrbrodt<text:line-break/>Commits: 1332<text:line-break/>Joined: <text:span text:style-name="T2">2011-06-08</text:span></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">Niklas Nebel<text:line-break/>Commits: 1296<text:line-break/>Joined: 2000-09-19</text:p> + <text:p text:style-name="Table_20_Contents">Thomas Lange [tl]<text:line-break/>Commits: 1310<text:line-break/>Joined: 2000-09-22</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>Michael Weghorn<text:line-break/>Commits: 1271<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-10</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Niklas Nebel<text:line-break/>Commits: 1296<text:line-break/>Joined: 2000-09-19</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">Christian Lohmaier<text:line-break/>Commits: 1268<text:line-break/>Joined: 2008-06-01</text:p> + <text:p text:style-name="Table_20_Contents">Christian Lohmaier<text:line-break/>Commits: 1280<text:line-break/>Joined: 2008-06-01</text:p> </table:table-cell> </table:table-row> <table:table-row> <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>Szymon Kłos<text:line-break/>Commits: 1261<text:line-break/>Joined: <text:span text:style-name="T2">2014-03-22</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Szymon Kłos<text:line-break/>Commits: 1262<text:line-break/>Joined: <text:span text:style-name="T2">2014-03-22</text:span></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>Jan-Marek Glogowski<text:line-break/>Commits: 1232<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-14</text:span></text:p> @@ -1457,10 +1463,10 @@ <text:p text:style-name="Table_20_Contents">Ingrid Halama<text:line-break/>Commits: 639<text:line-break/>Joined: 2001-01-19</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>Justin Luth<text:line-break/>Commits: 626<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-30</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jim Raykowski<text:line-break/>Commits: 630<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-16</text:span></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>Jim Raykowski<text:line-break/>Commits: 621<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-16</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 626<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-30</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1474,7 +1480,7 @@ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 603<text:line-break/>Joined: <text:span text:style-name="T2">2018-04-21</text:span></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">Rene Engelhard<text:line-break/>Commits: 592<text:line-break/>Joined: 2005-03-14</text:p> + <text:p text:style-name="Table_20_Contents">Rene Engelhard<text:line-break/>Commits: 593<text:line-break/>Joined: 2005-03-14</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1482,7 +1488,7 @@ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jochen Nitschke<text:line-break/>Commits: 587<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-02</text:span></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>Adolfo Jayme Barrientos<text:line-break/>Commits: 583<text:line-break/>Joined: <text:span text:style-name="T2">2013-06-21</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Adolfo Jayme Barrientos<text:line-break/>Commits: 586<text:line-break/>Joined: <text:span text:style-name="T2">2013-06-21</text:span></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>Yousuf Philips<text:line-break/>Commits: 569<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-21</text:span></text:p> @@ -1496,7 +1502,7 @@ <text:p text:style-name="Table_20_Contents">Jürgen Schmidt<text:line-break/>Commits: 512<text:line-break/>Joined: 2000-10-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"><text:span text:style-name="T1">*</text:span>Heiko Tietze<text:line-break/>Commits: 501<text:line-break/>Joined: <text:span text:style-name="T2">2016-10-06</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Heiko Tietze<text:line-break/>Commits: 509<text:line-break/>Joined: <text:span text:style-name="T2">2016-10-06</text:span></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>Peter Foley<text:line-break/>Commits: 489<text:line-break/>Joined: <text:span text:style-name="T2">2011-09-04</text:span></text:p> @@ -1516,7 +1522,7 @@ <text:p text:style-name="Table_20_Contents">Dirk Voelzke<text:line-break/>Commits: 392<text:line-break/>Joined: 2000-11-27</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>Henry Castro<text:line-break/>Commits: 390<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-09</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Henry Castro<text:line-break/>Commits: 391<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-09</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1524,13 +1530,13 @@ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Laurent BP<text:line-break/>Commits: 389<text:line-break/>Joined: <text:span text:style-name="T2">2011-08-31</text:span></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>Ivan Timofeev<text:line-break/>Commits: 380<text:line-break/>Joined: <text:span text:style-name="T2">2011-09-16</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jean-Pierre Ledure<text:line-break/>Commits: 382<text:line-break/>Joined: <text:span text:style-name="T2">2013-10-12</text:span></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>Jean-Pierre Ledure<text:line-break/>Commits: 380<text:line-break/>Joined: <text:span text:style-name="T2">2013-10-12</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rafael Lima<text:line-break/>Commits: 381<text:line-break/>Joined: <text:span text:style-name="T2">2020-11-13</text:span></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>Rafael Lima<text:line-break/>Commits: 373<text:line-break/>Joined: <text:span text:style-name="T2">2020-11-13</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ivan Timofeev<text:line-break/>Commits: 380<text:line-break/>Joined: <text:span text:style-name="T2">2011-09-16</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1555,7 +1561,7 @@ <text:p text:style-name="Table_20_Contents">Matthias Huetsch [mhu]<text:line-break/>Commits: 360<text:line-break/>Joined: 2000-09-28</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>Arnaud VERSINI<text:line-break/>Commits: 359<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-05</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Arnaud VERSINI<text:line-break/>Commits: 360<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-05</text:span></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">Patrick Luby<text:line-break/>Commits: 335<text:line-break/>Joined: 2000-09-21</text:p> @@ -1566,7 +1572,7 @@ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>David Ostrovsky<text:line-break/>Commits: 334<text:line-break/>Joined: <text:span text:style-name="T2">2012-04-01</text:span></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>Stanislav Horacek<text:line-break/>Commits: 317<text:line-break/>Joined: <text:span text:style-name="T2">2012-12-09</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Stanislav Horacek<text:line-break/>Commits: 319<text:line-break/>Joined: <text:span text:style-name="T2">2012-12-09</text:span></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">Radek Doulik<text:line-break/>Commits: 305<text:line-break/>Joined: 2010-05-03</text:p> @@ -1580,35 +1586,35 @@ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Chr. Rossmanith<text:line-break/>Commits: 300<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-03</text:span></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>August Sodora<text:line-break/>Commits: 285<text:line-break/>Joined: <text:span text:style-name="T2">2011-10-18</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andreas Heinisch<text:line-break/>Commits: 286<text:line-break/>Joined: <text:span text:style-name="T2">2019-05-13</text:span></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>Andreas Heinisch<text:line-break/>Commits: 285<text:line-break/>Joined: <text:span text:style-name="T2">2019-05-13</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>August Sodora<text:line-break/>Commits: 285<text:line-break/>Joined: <text:span text:style-name="T2">2011-10-18</text:span></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>Regina Henschel<text:line-break/>Commits: 281<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Regina Henschel<text:line-break/>Commits: 282<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> <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>Siqi Liu<text:line-break/>Commits: 277<text:line-break/>Joined: <text:span text:style-name="T2">2013-04-13</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 281<text:line-break/>Joined: <text:span text:style-name="T2">2020-02-03</text:span></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>Pierre-André Jacquod<text:line-break/>Commits: 276<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-13</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Siqi Liu<text:line-break/>Commits: 277<text:line-break/>Joined: <text:span text:style-name="T2">2013-04-13</text:span></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>Vasily Melenchuk<text:line-break/>Commits: 274<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-27</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Pierre-André Jacquod<text:line-break/>Commits: 276<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-13</text:span></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">Bartosz Kosiorek<text:line-break/>Commits: 264<text:line-break/>Joined: 2010-09-17</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Vasily Melenchuk<text:line-break/>Commits: 275<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-27</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Lars Langhans<text:line-break/>Commits: 260<text:line-break/>Joined: 2000-09-22</text:p> + <text:p text:style-name="Table_20_Contents">Bartosz Kosiorek<text:line-break/>Commits: 264<text:line-break/>Joined: 2010-09-17</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>Justin Luth<text:line-break/>Commits: 259<text:line-break/>Joined: <text:span text:style-name="T2">2020-02-03</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Lars Langhans<text:line-break/>Commits: 260<text:line-break/>Joined: 2000-09-22</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">Muthu Subramanian<text:line-break/>Commits: 250<text:line-break/>Joined: 2010-08-25</text:p> @@ -1618,29 +1624,29 @@ </table:table-cell> </table:table-row> <table:table-row> + <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>Ilmari Lauhakangas<text:line-break/>Commits: 219<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-15</text:span></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>Winfried Donkers<text:line-break/>Commits: 217<text:line-break/>Joined: <text:span text:style-name="T2">2011-11-11</text:span></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>Balazs Varga<text:line-break/>Commits: 212<text:line-break/>Joined: <text:span text:style-name="T2">2022-06-29</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Balazs Varga<text:line-break/>Commits: 215<text:line-break/>Joined: <text:span text:style-name="T2">2022-06-29</text:span></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>Dennis Francis<text:line-break/>Commits: 206<text:line-break/>Joined: <text:span text:style-name="T2">2018-11-15</text:span></text:p> </table:table-cell> + </table:table-row> + <table:table-row> <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>Tamas Bunth<text:line-break/>Commits: 203<text:line-break/>Joined: <text:span text:style-name="T2">2016-03-08</text:span></text:p> </table:table-cell> - </table:table-row> - <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Ingo Schmidt<text:line-break/>Commits: 202<text:line-break/>Joined: 2004-02-05</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>Arkadiy Illarionov<text:line-break/>Commits: 201<text:line-break/>Joined: <text:span text:style-name="T2">2017-01-15</text:span></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>Ilmari Lauhakangas<text:line-break/>Commits: 200<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-15</text:span></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>Jacobo Aragunde Pérez<text:line-break/>Commits: 192<text:line-break/>Joined: <text:span text:style-name="T2">2013-09-25</text:span></text:p> </table:table-cell> @@ -1661,16 +1667,16 @@ </table:table-row> <table:table-row> <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>François Tigeot<text:line-break/>Commits: 176<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-31</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gabor Kelemen<text:line-break/>Commits: 178<text:line-break/>Joined: <text:span text:style-name="T2">2023-02-14</text:span></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>Gabor Kelemen<text:line-break/>Commits: 175<text:line-break/>Joined: <text:span text:style-name="T2">2023-02-14</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>François Tigeot<text:line-break/>Commits: 176<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-31</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> -e ... etc. - the rest is truncated
