[Libreoffice-commits] .: 7 commits - sc/source
Markus Mohrhard
mmohrhard at kemper.freedesktop.org
Tue May 15 03:37:05 PDT 2012
sc/source/filter/inc/sheetdatabuffer.hxx | 4 -
sc/source/filter/oox/sheetdatabuffer.cxx | 27 +-------
sc/source/filter/oox/worksheethelper.cxx | 94 ++++++++++++++++++-------------
3 files changed, 59 insertions(+), 66 deletions(-)
New commits:
commit 844bba4bb44966a1d27f55c4e511eb7f5887d147
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date: Fri May 11 12:04:14 2012 -0500
Replace extra XFormulaTokens call with direct ScDocument
Change-Id: Ib7469c4214687021efdcfb9bbf162ee6eb6404c4
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 835324b..84b1678 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -69,6 +69,7 @@
#include "sharedstringsbuffer.hxx"
#include "sheetdatabuffer.hxx"
#include "stylesbuffer.hxx"
+#include "tokenuno.hxx"
#include "unitconverter.hxx"
#include "viewsettings.hxx"
#include "workbooksettings.hxx"
@@ -1587,9 +1588,13 @@ void WorksheetHelper::putRichString( const CellAddress& rAddress, const RichStri
void WorksheetHelper::putFormulaTokens( const CellAddress& rAddress, const ApiTokenSequence& rTokens ) const
{
- Reference< XFormulaTokens > xTokens( getCell( rAddress ), UNO_QUERY );
- OSL_ENSURE( xTokens.is(), "WorksheetHelper::putFormulaTokens - missing token interface" );
- if( xTokens.is() ) xTokens->setTokens( rTokens );
+ ScDocument& rDoc = getScDocument();
+ ScTokenArray aTokenArray;
+ ScAddress aCellPos;
+ ScUnoConversion::FillScAddress( aCellPos, rAddress );
+ ScTokenConversion::ConvertToTokenArray( rDoc, aTokenArray, rTokens );
+ ScBaseCell* pNewCell = new ScFormulaCell( &rDoc, aCellPos, &aTokenArray );
+ rDoc.PutCell( aCellPos, pNewCell, sal_True );
}
void WorksheetHelper::initializeWorksheetImport()
commit 82f91c909a49d3556e771f420c48d41eb71f506f
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date: Fri May 11 10:37:44 2012 -0500
Get cell instance once and use c++style cast
Change-Id: I0a2a06b805ba1fd7d03937e767568d622615b059
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index e9cefd7..835324b 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -1558,9 +1558,10 @@ void WorksheetHelper::putFormulaResult( const CellAddress& rAddress, double fVal
ScDocument& rDoc = getScDocument();
ScAddress aCellPos;
ScUnoConversion::FillScAddress( aCellPos, rAddress );
- if ( rDoc.GetCellType( aCellPos ) == CELLTYPE_FORMULA )
+ ScBaseCell* pBaseCell = rDoc.GetCell( aCellPos );
+ if ( pBaseCell->GetCellType() == CELLTYPE_FORMULA )
{
- ScFormulaCell* pCell = (ScFormulaCell *)rDoc.GetCell( aCellPos );
+ ScFormulaCell* pCell = static_cast< ScFormulaCell* >( pBaseCell );
pCell->SetHybridDouble( fValue );
pCell->ResetDirty();
pCell->ResetChanged();
commit 1158a8b833441b33ca30cfc1fae9f8f283745d81
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date: Fri May 11 10:14:43 2012 -0500
Use ScUnoConversion instead of casts for address conversion
Change-Id: Ia3fbe15aeed9a3cb7928ada1a438b190f8fbb017
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 49ab86a..e9cefd7 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -1548,7 +1548,9 @@ void WorksheetHelper::setManualRowHeight( sal_Int32 nRow )
void WorksheetHelper::putValue( const CellAddress& rAddress, double fValue ) const
{
- getScDocument().SetValue( (SCCOL)rAddress.Column, (SCROW)rAddress.Row, (SCTAB)rAddress.Sheet, fValue );
+ ScAddress aAddress;
+ ScUnoConversion::FillScAddress( aAddress, rAddress );
+ getScDocument().SetValue( aAddress.Col(), aAddress.Row(), aAddress.Tab(), fValue );
}
void WorksheetHelper::putFormulaResult( const CellAddress& rAddress, double fValue ) const
@@ -1567,7 +1569,9 @@ void WorksheetHelper::putFormulaResult( const CellAddress& rAddress, double fVal
void WorksheetHelper::putString( const CellAddress& rAddress, const OUString& rText ) const
{
- getScDocument().SetString( (SCCOL)rAddress.Column, (SCROW)rAddress.Row, (SCTAB)rAddress.Sheet, rText );
+ ScAddress aAddress;
+ ScUnoConversion::FillScAddress( aAddress, rAddress );
+ getScDocument().SetString( aAddress.Col(), aAddress.Row(), aAddress.Tab(), rText );
}
void WorksheetHelper::putRichString( const CellAddress& rAddress, const RichString& rString, const Font* pFirstPortionFont ) const
commit ac409adb1926f6c4f865b3c6df7bfd57e298a60b
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date: Thu May 10 17:01:37 2012 -0500
Pass forumlaResult value directly to ScDocument
- Removed extra call to XCell2 and instead passed formula result directly to ScDocument.
Change-Id: Ifea731e44f12a048b76f8d5a4cc2d0619a56bbbc
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 0f6fb0a..49ab86a 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -56,8 +56,10 @@
#include "oox/helper/propertyset.hxx"
#include "addressconverter.hxx"
#include "autofilterbuffer.hxx"
+#include "cell.hxx"
#include "commentsbuffer.hxx"
#include "condformatbuffer.hxx"
+#include "convuno.hxx"
#include "document.hxx"
#include "drawingfragment.hxx"
#include "drawingmanager.hxx"
@@ -1551,9 +1553,16 @@ void WorksheetHelper::putValue( const CellAddress& rAddress, double fValue ) con
void WorksheetHelper::putFormulaResult( const CellAddress& rAddress, double fValue ) const
{
- Reference< XCell2 > xCell( getCell( rAddress ), UNO_QUERY );
- OSL_ENSURE( xCell.is(), "WorksheetHelper::putFormulaResult - missing cell interface" );
- if( xCell.is() ) xCell->setFormulaResult( fValue );
+ ScDocument& rDoc = getScDocument();
+ ScAddress aCellPos;
+ ScUnoConversion::FillScAddress( aCellPos, rAddress );
+ if ( rDoc.GetCellType( aCellPos ) == CELLTYPE_FORMULA )
+ {
+ ScFormulaCell* pCell = (ScFormulaCell *)rDoc.GetCell( aCellPos );
+ pCell->SetHybridDouble( fValue );
+ pCell->ResetDirty();
+ pCell->ResetChanged();
+ }
}
void WorksheetHelper::putString( const CellAddress& rAddress, const OUString& rText ) const
commit 14f23858c617b8fa3872d743f6d4a78cf2338020
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date: Thu May 10 15:56:59 2012 -0500
Remove extra XText call and pass string directly to ScDocument
Change-Id: I568b86f34335bb9290ae796a6140d6e4ff65752b
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 42e3f70..0f6fb0a 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -1558,9 +1558,7 @@ void WorksheetHelper::putFormulaResult( const CellAddress& rAddress, double fVal
void WorksheetHelper::putString( const CellAddress& rAddress, const OUString& rText ) const
{
- Reference< XText > xText( getCell( rAddress ), UNO_QUERY );
- OSL_ENSURE( xText.is(), "WorksheetHelper::putString - missing text interface" );
- if( xText.is() ) xText->setString( rText );
+ getScDocument().SetString( (SCCOL)rAddress.Column, (SCROW)rAddress.Row, (SCTAB)rAddress.Sheet, rText );
}
void WorksheetHelper::putRichString( const CellAddress& rAddress, const RichString& rString, const Font* pFirstPortionFont ) const
commit 5057c65fed7e55982de5bda9626fe863b7316c64
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date: Thu May 10 15:10:01 2012 -0500
Remove getCellBlock() code that always returns null.
- Removed CellBlockBuffer::getCellBlock() method that always returns null as per my IRC convo yesterday with Kohei.
Change-Id: If57429c8cf48d309a610c703d97b53406653a767
diff --git a/sc/source/filter/inc/sheetdatabuffer.hxx b/sc/source/filter/inc/sheetdatabuffer.hxx
index 65612bc..c8dc451 100644
--- a/sc/source/filter/inc/sheetdatabuffer.hxx
+++ b/sc/source/filter/inc/sheetdatabuffer.hxx
@@ -152,10 +152,6 @@ public:
/** Sets column span information for a row. */
void setColSpans( sal_Int32 nRow, const ValueRangeSet& rColSpans );
- /** Tries to find a cell block. Recalculates the map of cell blocks, if the
- passed cell address is located in another row than the last cell. */
- CellBlock* getCellBlock( const ::com::sun::star::table::CellAddress& rCellAddr );
-
/** Inserts all cells of all open cell blocks into the Calc document. */
void finalizeImport();
diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx
index 245b167..6d4e305 100644
--- a/sc/source/filter/oox/sheetdatabuffer.cxx
+++ b/sc/source/filter/oox/sheetdatabuffer.cxx
@@ -211,13 +211,6 @@ void CellBlockBuffer::setColSpans( sal_Int32 nRow, const ValueRangeSet& rColSpan
maColSpans[ nRow ] = rColSpans.getRanges();
}
-CellBlock* CellBlockBuffer::getCellBlock( const CellAddress& rCellAddr )
-{
- (void) rCellAddr;
- // TODO: Fix this.
- return NULL;
-}
-
void CellBlockBuffer::finalizeImport()
{
maCellBlocks.forEachMem( &CellBlock::finalizeImport );
@@ -244,19 +237,13 @@ void SheetDataBuffer::setBlankCell( const CellModel& rModel )
void SheetDataBuffer::setValueCell( const CellModel& rModel, double fValue )
{
- if( CellBlock* pCellBlock = maCellBlocks.getCellBlock( rModel.maCellAddr ) )
- pCellBlock->getCellAny( rModel.maCellAddr.Column ) <<= fValue;
- else
- putValue( rModel.maCellAddr, fValue );
+ putValue( rModel.maCellAddr, fValue );
setCellFormat( rModel );
}
void SheetDataBuffer::setStringCell( const CellModel& rModel, const OUString& rText )
{
- if( CellBlock* pCellBlock = maCellBlocks.getCellBlock( rModel.maCellAddr ) )
- pCellBlock->getCellAny( rModel.maCellAddr.Column ) <<= rText;
- else
- putString( rModel.maCellAddr, rText );
+ putString( rModel.maCellAddr, rText );
setCellFormat( rModel );
}
@@ -271,10 +258,7 @@ void SheetDataBuffer::setStringCell( const CellModel& rModel, const RichStringRe
}
else
{
- if( CellBlock* pCellBlock = maCellBlocks.getCellBlock( rModel.maCellAddr ) )
- pCellBlock->insertRichString( rModel.maCellAddr, rxString, pFirstPortionFont );
- else
- putRichString( rModel.maCellAddr, *rxString, pFirstPortionFont );
+ putRichString( rModel.maCellAddr, *rxString, pFirstPortionFont );
setCellFormat( rModel );
}
}
@@ -574,10 +558,7 @@ void SheetDataBuffer::setCellFormula( const CellAddress& rCellAddr, const ApiTok
{
if( rTokens.hasElements() )
{
- if( CellBlock* pCellBlock = maCellBlocks.getCellBlock( rCellAddr ) )
- pCellBlock->getCellAny( rCellAddr.Column ) <<= rTokens;
- else
- putFormulaTokens( rCellAddr, rTokens );
+ putFormulaTokens( rCellAddr, rTokens );
}
}
commit 8f9099c01385fb6b72a352a07b11c2a1ed0e3ca1
Author: Daniel Bankston <daniel.dev.libreoffice at gmail.com>
Date: Thu May 10 14:04:42 2012 -0500
Remove extra XCell call and pass cell value directly to ScDocument.
Change-Id: Idb16d82dad08f1028a065cba568682477fe41313
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 3a3abc2..42e3f70 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -58,6 +58,7 @@
#include "autofilterbuffer.hxx"
#include "commentsbuffer.hxx"
#include "condformatbuffer.hxx"
+#include "document.hxx"
#include "drawingfragment.hxx"
#include "drawingmanager.hxx"
#include "formulaparser.hxx"
@@ -77,7 +78,7 @@ namespace xls {
// ============================================================================
-using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::drawing;
using namespace ::com::sun::star::lang;
@@ -263,17 +264,17 @@ public:
/** Returns the XDrawPage interface of the draw page of the current sheet. */
Reference< XDrawPage > getDrawPage() const;
/** Returns the size of the entire drawing page in 1/100 mm. */
- const Size& getDrawPageSize() const;
+ const awt::Size& getDrawPageSize() const;
/** Returns the absolute position of the top-left corner of the cell in 1/100 mm. */
- Point getCellPosition( sal_Int32 nCol, sal_Int32 nRow ) const;
+ awt::Point getCellPosition( sal_Int32 nCol, sal_Int32 nRow ) const;
/** Returns the size of the cell in 1/100 mm. */
- Size getCellSize( sal_Int32 nCol, sal_Int32 nRow ) const;
+ awt::Size getCellSize( sal_Int32 nCol, sal_Int32 nRow ) const;
/** Returns the address of the cell that contains the passed point in 1/100 mm. */
- CellAddress getCellAddressFromPosition( const Point& rPosition ) const;
+ CellAddress getCellAddressFromPosition( const awt::Point& rPosition ) const;
/** Returns the cell range address that contains the passed rectangle in 1/100 mm. */
- CellRangeAddress getCellRangeFromRectangle( const Rectangle& rRect ) const;
+ CellRangeAddress getCellRangeFromRectangle( const awt::Rectangle& rRect ) const;
/** Returns the buffer for cell contents and cell formatting. */
inline SheetDataBuffer& getSheetData() { return maSheetData; }
@@ -314,7 +315,7 @@ public:
/** Extends the used area of this sheet by the passed cell range. */
void extendUsedArea( const CellRangeAddress& rRange );
/** Extends the shape bounding box by the position and size of the passed rectangle. */
- void extendShapeBoundingBox( const Rectangle& rShapeRect );
+ void extendShapeBoundingBox( const awt::Rectangle& rShapeRect );
/** Sets base width for all columns (without padding pixels). This value
is only used, if base width has not been set with setDefaultColumnWidth(). */
@@ -407,8 +408,8 @@ private:
BiffSheetDrawingPtr mxBiffDrawing; /// Collection of all BIFF/DFF shapes.
OUString maDrawingPath; /// Path to DrawingML fragment.
OUString maVmlDrawingPath; /// Path to legacy VML drawing fragment.
- Size maDrawPageSize; /// Current size of the drawing page in 1/100 mm.
- Rectangle maShapeBoundingBox; /// Bounding box for all shapes from all drawings.
+ awt::Size maDrawPageSize; /// Current size of the drawing page in 1/100 mm.
+ awt::Rectangle maShapeBoundingBox; /// Bounding box for all shapes from all drawings.
ISegmentProgressBarRef mxProgressBar; /// Sheet progress bar.
ISegmentProgressBarRef mxRowProgress; /// Progress bar for row/cell processing.
ISegmentProgressBarRef mxFinalProgress; /// Progress bar for finalization.
@@ -589,23 +590,23 @@ Reference< XDrawPage > WorksheetGlobals::getDrawPage() const
return xDrawPage;
}
-const Size& WorksheetGlobals::getDrawPageSize() const
+const awt::Size& WorksheetGlobals::getDrawPageSize() const
{
OSL_ENSURE( (maDrawPageSize.Width > 0) && (maDrawPageSize.Height > 0), "WorksheetGlobals::getDrawPageSize - called too early, size invalid" );
return maDrawPageSize;
}
-Point WorksheetGlobals::getCellPosition( sal_Int32 nCol, sal_Int32 nRow ) const
+awt::Point WorksheetGlobals::getCellPosition( sal_Int32 nCol, sal_Int32 nRow ) const
{
- Point aPoint;
+ awt::Point aPoint;
PropertySet aCellProp( getCell( CellAddress( getSheetIndex(), nCol, nRow ) ) );
aCellProp.getProperty( aPoint, PROP_Position );
return aPoint;
}
-Size WorksheetGlobals::getCellSize( sal_Int32 nCol, sal_Int32 nRow ) const
+awt::Size WorksheetGlobals::getCellSize( sal_Int32 nCol, sal_Int32 nRow ) const
{
- Size aSize;
+ awt::Size aSize;
PropertySet aCellProp( getCell( CellAddress( getSheetIndex(), nCol, nRow ) ) );
aCellProp.getProperty( aSize, PROP_Size );
return aSize;
@@ -680,23 +681,23 @@ bool lclUpdateInterval( sal_Int32& rnBegAddr, sal_Int32& rnMidAddr, sal_Int32& r
} // namespace
-CellAddress WorksheetGlobals::getCellAddressFromPosition( const Point& rPosition ) const
+CellAddress WorksheetGlobals::getCellAddressFromPosition( const awt::Point& rPosition ) const
{
// starting cell address and its position in drawing layer (top-left edge)
sal_Int32 nBegCol = 0;
sal_Int32 nBegRow = 0;
- Point aBegPos( 0, 0 );
+ awt::Point aBegPos( 0, 0 );
// end cell address and its position in drawing layer (bottom-right edge)
sal_Int32 nEndCol = mrMaxApiPos.Column + 1;
sal_Int32 nEndRow = mrMaxApiPos.Row + 1;
- Point aEndPos( maDrawPageSize.Width, maDrawPageSize.Height );
+ awt::Point aEndPos( maDrawPageSize.Width, maDrawPageSize.Height );
// starting point for interval search
sal_Int32 nMidCol, nMidRow;
bool bLoopCols = lclPrepareInterval( nBegCol, nMidCol, nEndCol, aBegPos.X, aEndPos.X, rPosition.X );
bool bLoopRows = lclPrepareInterval( nBegRow, nMidRow, nEndRow, aBegPos.Y, aEndPos.Y, rPosition.Y );
- Point aMidPos = getCellPosition( nMidCol, nMidRow );
+ awt::Point aMidPos = getCellPosition( nMidCol, nMidRow );
/* The loop will find the column/row index of the cell right of/below
the cell containing the passed point, unless the point is located at
@@ -716,10 +717,10 @@ CellAddress WorksheetGlobals::getCellAddressFromPosition( const Point& rPosition
return CellAddress( getSheetIndex(), nMidCol, nMidRow );
}
-CellRangeAddress WorksheetGlobals::getCellRangeFromRectangle( const Rectangle& rRect ) const
+CellRangeAddress WorksheetGlobals::getCellRangeFromRectangle( const awt::Rectangle& rRect ) const
{
- CellAddress aStartAddr = getCellAddressFromPosition( Point( rRect.X, rRect.Y ) );
- Point aBotRight( rRect.X + rRect.Width, rRect.Y + rRect.Height );
+ CellAddress aStartAddr = getCellAddressFromPosition( awt::Point( rRect.X, rRect.Y ) );
+ awt::Point aBotRight( rRect.X + rRect.Width, rRect.Y + rRect.Height );
CellAddress aEndAddr = getCellAddressFromPosition( aBotRight );
bool bMultiCols = aStartAddr.Column < aEndAddr.Column;
bool bMultiRows = aStartAddr.Row < aEndAddr.Row;
@@ -727,7 +728,7 @@ CellRangeAddress WorksheetGlobals::getCellRangeFromRectangle( const Rectangle& r
{
/* Reduce end position of the cell range to previous column or row, if
the rectangle ends exactly between two columns or rows. */
- Point aEndPos = getCellPosition( aEndAddr.Column, aEndAddr.Row );
+ awt::Point aEndPos = getCellPosition( aEndAddr.Column, aEndAddr.Row );
if( bMultiCols && (aBotRight.X <= aEndPos.X) )
--aEndAddr.Column;
if( bMultiRows && (aBotRight.Y <= aEndPos.Y) )
@@ -779,7 +780,7 @@ void WorksheetGlobals::extendUsedArea( const CellRangeAddress& rRange )
extendUsedArea( CellAddress( rRange.Sheet, rRange.EndColumn, rRange.EndRow ) );
}
-void WorksheetGlobals::extendShapeBoundingBox( const Rectangle& rShapeRect )
+void WorksheetGlobals::extendShapeBoundingBox( const awt::Rectangle& rShapeRect )
{
if( (maShapeBoundingBox.Width == 0) && (maShapeBoundingBox.Height == 0) )
{
@@ -1413,17 +1414,17 @@ Reference< XDrawPage > WorksheetHelper::getDrawPage() const
return mrSheetGlob.getDrawPage();
}
-Point WorksheetHelper::getCellPosition( sal_Int32 nCol, sal_Int32 nRow ) const
+awt::Point WorksheetHelper::getCellPosition( sal_Int32 nCol, sal_Int32 nRow ) const
{
return mrSheetGlob.getCellPosition( nCol, nRow );
}
-Size WorksheetHelper::getCellSize( sal_Int32 nCol, sal_Int32 nRow ) const
+awt::Size WorksheetHelper::getCellSize( sal_Int32 nCol, sal_Int32 nRow ) const
{
return mrSheetGlob.getCellSize( nCol, nRow );
}
-Size WorksheetHelper::getDrawPageSize() const
+awt::Size WorksheetHelper::getDrawPageSize() const
{
return mrSheetGlob.getDrawPageSize();
}
@@ -1508,7 +1509,7 @@ void WorksheetHelper::extendUsedArea( const CellRangeAddress& rRange )
mrSheetGlob.extendUsedArea( rRange );
}
-void WorksheetHelper::extendShapeBoundingBox( const Rectangle& rShapeRect )
+void WorksheetHelper::extendShapeBoundingBox( const awt::Rectangle& rShapeRect )
{
mrSheetGlob.extendShapeBoundingBox( rShapeRect );
}
@@ -1545,9 +1546,7 @@ void WorksheetHelper::setManualRowHeight( sal_Int32 nRow )
void WorksheetHelper::putValue( const CellAddress& rAddress, double fValue ) const
{
- Reference< XCell > xCell = getCell( rAddress );
- OSL_ENSURE( xCell.is(), "WorksheetHelper::putValue - missing cell interface" );
- if( xCell.is() ) xCell->setValue( fValue );
+ getScDocument().SetValue( (SCCOL)rAddress.Column, (SCROW)rAddress.Row, (SCTAB)rAddress.Sheet, fValue );
}
void WorksheetHelper::putFormulaResult( const CellAddress& rAddress, double fValue ) const
More information about the Libreoffice-commits
mailing list