sc/source/ui/Accessibility/AccessibleDocument.cxx | 6 - sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx | 5 - sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx | 46 +++++++------ sc/source/ui/app/transobj.cxx | 8 +- sc/source/ui/dataprovider/csvdataprovider.cxx | 2 sc/source/ui/dataprovider/dataprovider.cxx | 4 - sc/source/ui/miscdlgs/crnrdlg.cxx | 32 ++++----- 7 files changed, 57 insertions(+), 46 deletions(-)
New commits: commit 4cee86a0ee1c2f2b35c59b13e708d9a6941d2730 Author: Aron Budea <aron.bu...@collabora.com> AuthorDate: Tue Oct 22 02:13:46 2019 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Oct 22 08:24:26 2019 +0200 sc: rowcol: tdf#50916 convert some in ui Change-Id: I7c505774a4174e211598affead664592c2fe9a0f Reviewed-on: https://gerrit.libreoffice.org/81293 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx index 85a626ac6c91..dbce56b37c59 100644 --- a/sc/source/ui/Accessibility/AccessibleDocument.cxx +++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx @@ -867,8 +867,7 @@ SdrPage* ScChildrenShapes::GetDrawPage() const SdrPage* pDrawPage = nullptr; if (mpViewShell) { - ScViewData& rViewData = mpViewShell->GetViewData(); - ScDocument* pDoc = rViewData.GetDocument(); + ScDocument* pDoc = mpViewShell->GetViewData().GetDocument(); if (pDoc && pDoc->GetDrawLayer()) { ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); @@ -2132,7 +2131,8 @@ bool ScAccessibleDocument::IsTableSelected() const //#103800#; use a copy of MarkData ScMarkData aMarkData(mpViewShell->GetViewData().GetMarkData()); aMarkData.MarkToMulti(); - if (aMarkData.IsAllMarked( ScRange( 0, 0, nTab, MAXCOL, MAXROW, nTab))) + ScDocument* pDoc = GetDocument(); + if (aMarkData.IsAllMarked( ScRange( 0, 0, nTab, pDoc->MaxCol(), pDoc->MaxRow(), nTab))) bResult = true; } return bResult; diff --git a/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx b/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx index d830a725425a..ed5edfa83b20 100644 --- a/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx +++ b/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx @@ -155,10 +155,11 @@ uno::Any SAL_CALL ScAccessiblePreviewHeaderCell::getMaximumValue() IsObjectValid(); double fValue(0.0); + ScDocument& rDoc = mpViewShell->GetDocument(); if (mbColumnHeader) - fValue = MAXCOL; + fValue = rDoc.MaxCol(); else - fValue = MAXROW; + fValue = rDoc.MaxRow(); return uno::Any(fValue); } diff --git a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx index 58db4cadcd4a..e60629fa63c0 100644 --- a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx +++ b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx @@ -64,7 +64,8 @@ ScMyAddress ScAccessibleSpreadsheet::CalcScAddressFromRangeList(ScRangeList *pMa } else { - sal_Int32 nMinRow = MAXROW; + ScDocument* pDoc= GetDocument(mpViewShell); + sal_Int32 nMinRow = pDoc->MaxRow(); sal_Int32 nMaxRow = 0; m_vecTempRange.clear(); size_t nSize = pMarkedRanges->size(); @@ -246,7 +247,7 @@ ScAccessibleSpreadsheet::ScAccessibleSpreadsheet( SCTAB nTab, ScSplitPos eSplitPos) : - ScAccessibleTableBase( pAccDoc, GetDocument(pViewShell), ScRange( 0, 0, nTab, MAXCOL, MAXROW, nTab)), + ScAccessibleTableBase( pAccDoc, GetDocument(pViewShell), ScRange( 0, 0, nTab, GetDocument(pViewShell)->MaxCol(), GetDocument(pViewShell)->MaxRow(), nTab)), mbIsSpreadsheet( true ), m_bFormulaMode( false ), m_bFormulaLastMode( false ), @@ -513,10 +514,11 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ScRange aMarkRange; refScMarkData.GetMarkArea(aMarkRange); aEvent.OldValue.clear(); + ScDocument* pDoc= GetDocument(mpViewShell); //Mark All if ( !bNewPosCellFocus && (bNewMarked || bIsMark || bIsMultMark ) && - aMarkRange == ScRange( 0,0,nTab, MAXCOL,MAXROW,nTab ) ) + aMarkRange == ScRange( 0,0,nTab, pDoc->MaxCol(),pDoc->MaxRow(),nTab ) ) { aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN; aEvent.NewValue.clear(); @@ -530,8 +532,8 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, const SfxHint& rHint refScMarkData.FillRangeListWithMarks(mpMarkedRanges.get(), true); //For Whole Col Row - bool bWholeRow = ::labs(aMarkRange.aStart.Row() - aMarkRange.aEnd.Row()) == MAXROW ; - bool bWholeCol = ::abs(aMarkRange.aStart.Col() - aMarkRange.aEnd.Col()) == MAXCOL ; + bool bWholeRow = ::labs(aMarkRange.aStart.Row() - aMarkRange.aEnd.Row()) == pDoc->MaxRow() ; + bool bWholeCol = ::abs(aMarkRange.aStart.Col() - aMarkRange.aEnd.Col()) == pDoc->MaxCol() ; if ((bNewMarked || bIsMark || bIsMultMark ) && (bWholeCol || bWholeRow)) { if ( aMarkRange != m_aLastWithInMarkRange ) @@ -542,8 +544,8 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, const SfxHint& rHint CommitFocusCell(aNewCell); } bool bLastIsWholeColRow = - (::labs(m_aLastWithInMarkRange.aStart.Row() - m_aLastWithInMarkRange.aEnd.Row()) == MAXROW && bWholeRow) || - (::abs(m_aLastWithInMarkRange.aStart.Col() - m_aLastWithInMarkRange.aEnd.Col()) == MAXCOL && bWholeCol); + (::labs(m_aLastWithInMarkRange.aStart.Row() - m_aLastWithInMarkRange.aEnd.Row()) == pDoc->MaxRow() && bWholeRow) || + (::abs(m_aLastWithInMarkRange.aStart.Col() - m_aLastWithInMarkRange.aEnd.Col()) == pDoc->MaxCol() && bWholeCol); bool bSelSmaller= bLastIsWholeColRow && !aMarkRange.In(m_aLastWithInMarkRange) && @@ -758,8 +760,9 @@ uno::Reference< XAccessibleTable > SAL_CALL ScAccessibleSpreadsheet::getAccessib { SCROW nStart = pRowRange->aStart.Row(); SCROW nEnd = pRowRange->aEnd.Row(); - if( (0 <= nStart) && (nStart <= nEnd) && (nEnd <= MAXROW) ) - xAccessibleTable.set( new ScAccessibleSpreadsheet( *this, ScRange( 0, nStart, mnTab, MAXCOL, nEnd, mnTab ) ) ); + ScDocument* pDoc = GetDocument(mpViewShell); + if( (0 <= nStart) && (nStart <= nEnd) && (nEnd <= pDoc->MaxRow()) ) + xAccessibleTable.set( new ScAccessibleSpreadsheet( *this, ScRange( 0, nStart, mnTab, pDoc->MaxCol(), nEnd, mnTab ) ) ); } } return xAccessibleTable; @@ -776,8 +779,9 @@ uno::Reference< XAccessibleTable > SAL_CALL ScAccessibleSpreadsheet::getAccessib { SCCOL nStart = pColRange->aStart.Col(); SCCOL nEnd = pColRange->aEnd.Col(); - if( (0 <= nStart) && (nStart <= nEnd) && (nEnd <= MAXCOL) ) - xAccessibleTable.set( new ScAccessibleSpreadsheet( *this, ScRange( nStart, 0, mnTab, nEnd, MAXROW, mnTab ) ) ); + ScDocument* pDoc = GetDocument(mpViewShell); + if( (0 <= nStart) && (nStart <= nEnd) && (nEnd <= pDoc->MaxCol()) ) + xAccessibleTable.set( new ScAccessibleSpreadsheet( *this, ScRange( nStart, 0, mnTab, nEnd, pDoc->MaxRow(), mnTab ) ) ); } } return xAccessibleTable; @@ -1073,11 +1077,12 @@ void SAL_CALL ScAccessibleSpreadsheet::selectAllAccessibleChildren( ) { if (IsFormulaMode()) { + ScDocument* pDoc = GetDocument(mpViewShell); ScViewData& rViewData = mpViewShell->GetViewData(); mpViewShell->InitRefMode( 0, 0, rViewData.GetTabNo(), SC_REFTYPE_REF ); rViewData.SetRefStart(0, 0, rViewData.GetTabNo()); - rViewData.SetRefEnd(MAXCOL, MAXROW, rViewData.GetTabNo()); - mpViewShell->UpdateRef(MAXCOL, MAXROW, rViewData.GetTabNo()); + rViewData.SetRefEnd(pDoc->MaxCol(), pDoc->MaxRow(), rViewData.GetTabNo()); + mpViewShell->UpdateRef(pDoc->MaxCol(), pDoc->MaxRow(), rViewData.GetTabNo()); } else mpViewShell->SelectAll(); @@ -1379,10 +1384,11 @@ sal_Bool SAL_CALL ScAccessibleSpreadsheet::selectRow( sal_Int32 row ) return false; } + ScDocument* pDoc = GetDocument(mpViewShell); mpViewShell->SetTabNo( maRange.aStart.Tab() ); mpViewShell->DoneBlockMode( true ); // continue selecting mpViewShell->InitBlockMode( 0, row, maRange.aStart.Tab(), false, false, true ); - mpViewShell->MarkCursor( MAXCOL, row, maRange.aStart.Tab(), false, true ); + mpViewShell->MarkCursor( pDoc->MaxCol(), row, maRange.aStart.Tab(), false, true ); mpViewShell->SelectionChanged(); return true; } @@ -1396,10 +1402,11 @@ sal_Bool SAL_CALL ScAccessibleSpreadsheet::selectColumn( sal_Int32 column ) return false; } + ScDocument* pDoc = GetDocument(mpViewShell); mpViewShell->SetTabNo( maRange.aStart.Tab() ); mpViewShell->DoneBlockMode( true ); // continue selecting mpViewShell->InitBlockMode( static_cast<SCCOL>(column), 0, maRange.aStart.Tab(), false, true ); - mpViewShell->MarkCursor( static_cast<SCCOL>(column), MAXROW, maRange.aStart.Tab(), true ); + mpViewShell->MarkCursor( static_cast<SCCOL>(column), pDoc->MaxRow(), maRange.aStart.Tab(), true ); mpViewShell->SelectionChanged(); return true; } @@ -1413,10 +1420,11 @@ sal_Bool SAL_CALL ScAccessibleSpreadsheet::unselectRow( sal_Int32 row ) return false; } + ScDocument* pDoc = GetDocument(mpViewShell); mpViewShell->SetTabNo( maRange.aStart.Tab() ); mpViewShell->DoneBlockMode( true ); // continue selecting mpViewShell->InitBlockMode( 0, row, maRange.aStart.Tab(), false, false, true, true ); - mpViewShell->MarkCursor( MAXCOL, row, maRange.aStart.Tab(), false, true ); + mpViewShell->MarkCursor( pDoc->MaxCol(), row, maRange.aStart.Tab(), false, true ); mpViewShell->SelectionChanged(); mpViewShell->DoneBlockMode( true ); return true; @@ -1431,10 +1439,11 @@ sal_Bool SAL_CALL ScAccessibleSpreadsheet::unselectColumn( sal_Int32 column ) return false; } + ScDocument* pDoc = GetDocument(mpViewShell); mpViewShell->SetTabNo( maRange.aStart.Tab() ); mpViewShell->DoneBlockMode( true ); // continue selecting mpViewShell->InitBlockMode( static_cast<SCCOL>(column), 0, maRange.aStart.Tab(), false, true, false, true ); - mpViewShell->MarkCursor( static_cast<SCCOL>(column), MAXROW, maRange.aStart.Tab(), true ); + mpViewShell->MarkCursor( static_cast<SCCOL>(column), pDoc->MaxRow(), maRange.aStart.Tab(), true ); mpViewShell->SelectionChanged(); mpViewShell->DoneBlockMode( true ); return true; @@ -1631,7 +1640,8 @@ bool ScAccessibleSpreadsheet::GetFormulaCurrentFocusCell(ScAddress &addr) nRefX=rViewData.GetRefStartX(); nRefY=rViewData.GetRefStartY(); } - if( /* Always true: nRefX >= 0 && */ nRefX <= MAXCOL && nRefY >= 0 && nRefY <= MAXROW) + ScDocument* pDoc = GetDocument(mpViewShell); + if( /* Always true: nRefX >= 0 && */ nRefX <= pDoc->MaxCol() && nRefY >= 0 && nRefY <= pDoc->MaxRow()) { addr = ScAddress(nRefX,nRefY,rViewData.GetTabNo()); return true; diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx index af245903d8f9..62db9a961102 100644 --- a/sc/source/ui/app/transobj.cxx +++ b/sc/source/ui/app/transobj.cxx @@ -115,8 +115,8 @@ ScTransferObj::ScTransferObj( ScDocumentUniquePtr pClipDoc, const TransferableOb m_aObjDesc( rDesc ), m_nDragHandleX( 0 ), m_nDragHandleY( 0 ), - m_nSourceCursorX( MAXCOL + 1 ), - m_nSourceCursorY( MAXROW + 1 ), + m_nSourceCursorX( m_pDoc->MaxCol() + 1 ), + m_nSourceCursorY( m_pDoc->MaxRow() + 1 ), m_nDragSourceFlags( ScDragSrc::Undefined ), m_bDragWasInternal( false ), m_bUsedForLink( false ), @@ -155,7 +155,7 @@ ScTransferObj::ScTransferObj( ScDocumentUniquePtr pClipDoc, const TransferableOb // only limit to used cells if whole sheet was marked // (so empty cell areas can be copied) - if ( nCol2>=MAXCOL && nRow2>=MAXROW ) + if ( nCol2>=m_pDoc->MaxCol() && nRow2>=m_pDoc->MaxRow() ) { SCROW nMaxRow; SCCOL nMaxCol; @@ -236,7 +236,7 @@ void ScTransferObj::AddSupportedFormats() static ScRange lcl_reduceBlock(const ScDocumentUniquePtr &pDoc, ScRange aReducedBlock, bool bIncludeVisual = false) { - if ((aReducedBlock.aEnd.Col() == MAXCOL || aReducedBlock.aEnd.Row() == MAXROW) && + if ((aReducedBlock.aEnd.Col() == pDoc->MaxCol() || aReducedBlock.aEnd.Row() == pDoc->MaxRow()) && aReducedBlock.aStart.Tab() == aReducedBlock.aEnd.Tab()) { // Shrink the block here so we don't waste time creating huge diff --git a/sc/source/ui/dataprovider/csvdataprovider.cxx b/sc/source/ui/dataprovider/csvdataprovider.cxx index 56a5353b0a18..8e619e63f771 100644 --- a/sc/source/ui/dataprovider/csvdataprovider.cxx +++ b/sc/source/ui/dataprovider/csvdataprovider.cxx @@ -43,7 +43,7 @@ public: void cell(const char* p, size_t n, bool /*transient*/) { - if (mnCol > MAXCOL) + if (mnCol > mpDoc->MaxCol()) return; double mfValue = 0.0; diff --git a/sc/source/ui/dataprovider/dataprovider.cxx b/sc/source/ui/dataprovider/dataprovider.cxx index 24e6a07b62d8..34b4631c8614 100644 --- a/sc/source/ui/dataprovider/dataprovider.cxx +++ b/sc/source/ui/dataprovider/dataprovider.cxx @@ -223,8 +223,8 @@ void ScDBDataManager::WriteToDoc(ScDocument& rDoc) bool bShrunk = false; SCCOL nStartCol = 0; SCROW nStartRow = 0; - SCCOL nEndCol = MAXCOL; - SCROW nEndRow = MAXROW; + SCCOL nEndCol = rDoc.MaxCol(); + SCROW nEndRow = rDoc.MaxRow(); rDoc.ShrinkToUsedDataArea(bShrunk, 0, nStartCol, nStartRow, nEndCol, nEndRow, false, true, true); ScRange aClipRange(nStartCol, nStartRow, 0, nEndCol, nEndRow, 0); rDoc.SetClipArea(aClipRange); diff --git a/sc/source/ui/miscdlgs/crnrdlg.cxx b/sc/source/ui/miscdlgs/crnrdlg.cxx index 32d1d591b35a..1098f2772b86 100644 --- a/sc/source/ui/miscdlgs/crnrdlg.cxx +++ b/sc/source/ui/miscdlgs/crnrdlg.cxx @@ -166,11 +166,11 @@ void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange, bool bRef SCCOL nCol2 = theCurArea.aEnd.Col(); SCROW nRow1 = theCurArea.aStart.Row(); SCROW nRow2 = theCurArea.aEnd.Row(); - if ( (static_cast<SCCOLROW>(nCol2 - nCol1) >= nRow2 - nRow1) || (nCol1 == 0 && nCol2 == MAXCOL) ) + if ( (static_cast<SCCOLROW>(nCol2 - nCol1) >= nRow2 - nRow1) || (nCol1 == 0 && nCol2 == pDoc->MaxCol()) ) { // Column headers and the limiting case of the whole sheet m_xBtnColHead->set_active(true); m_xBtnRowHead->set_active(false); - if ( nRow2 == MAXROW ) + if ( nRow2 == pDoc->MaxRow() ) { if ( nRow1 == 0 ) bValid = false; // limiting case of the whole sheet @@ -183,14 +183,14 @@ void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange, bool bRef else { // Header at top, data below theCurData.aStart.SetRow( nRow2 + 1 ); - theCurData.aEnd.SetRow( MAXROW ); + theCurData.aEnd.SetRow( pDoc->MaxRow() ); } } else { // Column headers m_xBtnRowHead->set_active(true); m_xBtnColHead->set_active(false); - if ( nCol2 == MAXCOL ) + if ( nCol2 == pDoc->MaxCol() ) { // Header at the right, data to the left theCurData.aStart.SetCol( 0 ); theCurData.aEnd.SetCol( nCol2 - 1 ); @@ -198,7 +198,7 @@ void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange, bool bRef else { // Header at the left, data to the right theCurData.aStart.SetCol( nCol2 + 1 ); - theCurData.aEnd.SetCol( MAXCOL ); + theCurData.aEnd.SetCol( pDoc->MaxCol() ); } } if ( bValid ) @@ -254,7 +254,7 @@ void ScColRowNameRangesDlg::AdjustColRowData( const ScRange& rDataRange, bool bR SCROW nRow1 = theCurArea.aStart.Row(); SCROW nRow2 = theCurArea.aEnd.Row(); if ( nRow1 > 0 - && (theCurData.aEnd.Row() < nRow2 || nRow2 == MAXROW) ) + && (theCurData.aEnd.Row() < nRow2 || nRow2 == pDoc->MaxRow()) ) { // Data above header theCurData.aEnd.SetRow( nRow1 - 1 ); if ( theCurData.aStart.Row() > theCurData.aEnd.Row() ) @@ -277,7 +277,7 @@ void ScColRowNameRangesDlg::AdjustColRowData( const ScRange& rDataRange, bool bR SCCOL nCol1 = theCurArea.aStart.Col(); SCCOL nCol2 = theCurArea.aEnd.Col(); if ( nCol1 > 0 - && (theCurData.aEnd.Col() < nCol2 || nCol2 == MAXCOL) ) + && (theCurData.aEnd.Col() < nCol2 || nCol2 == pDoc->MaxCol()) ) { // Data left of header theCurData.aEnd.SetCol( nCol1 - 1 ); if ( theCurData.aStart.Col() > theCurData.aEnd.Col() ) @@ -498,7 +498,7 @@ IMPL_LINK_NOARG(ScColRowNameRangesDlg, OkBtnHdl, weld::Button&, void) // changed ranges need to take effect pDoc->CompileColRowNameFormula(); ScDocShell* pDocShell = pViewData->GetDocShell(); - pDocShell->PostPaint(ScRange(0, 0, 0, MAXCOL, MAXROW, MAXTAB), PaintPartFlags::Grid); + pDocShell->PostPaint(ScRange(0, 0, 0, pDoc->MaxCol(), pDoc->MaxRow(), MAXTAB), PaintPartFlags::Grid); pDocShell->SetDocumentModified(); response(RET_OK); @@ -745,15 +745,15 @@ IMPL_LINK_NOARG(ScColRowNameRangesDlg, ColClickHdl, weld::Button&, void) { if (m_xBtnColHead->get_active()) { - if ( theCurArea.aStart.Row() == 0 && theCurArea.aEnd.Row() == MAXROW ) + if ( theCurArea.aStart.Row() == 0 && theCurArea.aEnd.Row() == pDoc->MaxRow() ) { - theCurArea.aEnd.SetRow( MAXROW - 1 ); + theCurArea.aEnd.SetRow( pDoc->MaxRow() - 1 ); OUString aStr(theCurArea.Format(ScRefFlags::RANGE_ABS_3D, pDoc, pDoc->GetAddressConvention())); m_xEdAssign->SetText( aStr ); } ScRange aRange( theCurData ); - aRange.aStart.SetRow( std::min( static_cast<long>(theCurArea.aEnd.Row() + 1), long(MAXROW) ) ); - aRange.aEnd.SetRow( MAXROW ); + aRange.aStart.SetRow( std::min( static_cast<long>(theCurArea.aEnd.Row() + 1), static_cast<long>(pDoc->MaxRow()) ) ); + aRange.aEnd.SetRow( pDoc->MaxRow() ); AdjustColRowData( aRange ); } } @@ -763,15 +763,15 @@ IMPL_LINK_NOARG(ScColRowNameRangesDlg, RowClickHdl, weld::Button&, void) { if (m_xBtnRowHead->get_active()) { - if ( theCurArea.aStart.Col() == 0 && theCurArea.aEnd.Col() == MAXCOL ) + if ( theCurArea.aStart.Col() == 0 && theCurArea.aEnd.Col() == pDoc->MaxCol() ) { - theCurArea.aEnd.SetCol( MAXCOL - 1 ); + theCurArea.aEnd.SetCol( pDoc->MaxCol() - 1 ); OUString aStr(theCurArea.Format(ScRefFlags::RANGE_ABS_3D, pDoc, pDoc->GetAddressConvention())); m_xEdAssign->SetText( aStr ); } ScRange aRange( theCurData ); - aRange.aStart.SetCol( static_cast<SCCOL>(std::min( static_cast<long>(theCurArea.aEnd.Col() + 1), long(MAXCOL) )) ); - aRange.aEnd.SetCol( MAXCOL ); + aRange.aStart.SetCol( static_cast<SCCOL>(std::min( static_cast<long>(theCurArea.aEnd.Col() + 1), static_cast<long>(pDoc->MaxCol()) )) ); + aRange.aEnd.SetCol( pDoc->MaxCol() ); AdjustColRowData( aRange ); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits