From bc0afba780200f61462d7aeba40ca82ebb4bb21f Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Fri, 9 Sep 2011 23:02:00 -0400 Subject: PostPaint() now takes range list. --- sc/source/ui/docshell/docsh3.cxx | 107 +++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 49 deletions(-) (limited to 'sc/source/ui/docshell/docsh3.cxx') diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx index fc9ab4a948ba..3b71f726eeff 100644 --- a/sc/source/ui/docshell/docsh3.cxx +++ b/sc/source/ui/docshell/docsh3.cxx @@ -118,69 +118,78 @@ void ScDocShell::PostPaint( SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab, PostPaint(aRange, nPart, nExtFlags); } -void ScDocShell::PostPaint( const ScRange& rRange, sal_uInt16 nPart, sal_uInt16 nExtFlags ) +void ScDocShell::PostPaint( const ScRangeList& rRanges, sal_uInt16 nPart, sal_uInt16 nExtFlags ) { - SCCOL nCol1 = rRange.aStart.Col(), nCol2 = rRange.aEnd.Col(); - SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row(); - SCTAB nTab1 = rRange.aStart.Tab(), nTab2 = rRange.aEnd.Tab(); + ScRangeList aPaintRanges; + for (size_t i = 0, n = rRanges.size(); i < n; ++i) + { + const ScRange& rRange = *rRanges[i]; + SCCOL nCol1 = rRange.aStart.Col(), nCol2 = rRange.aEnd.Col(); + SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row(); + SCTAB nTab1 = rRange.aStart.Tab(), nTab2 = rRange.aEnd.Tab(); - if (!ValidCol(nCol1)) nCol1 = MAXCOL; - if (!ValidRow(nRow1)) nRow1 = MAXROW; - if (!ValidCol(nCol2)) nCol2 = MAXCOL; - if (!ValidRow(nRow2)) nRow2 = MAXROW; + if (!ValidCol(nCol1)) nCol1 = MAXCOL; + if (!ValidRow(nRow1)) nRow1 = MAXROW; + if (!ValidCol(nCol2)) nCol2 = MAXCOL; + if (!ValidRow(nRow2)) nRow2 = MAXROW; - if ( pPaintLockData ) - { - // #i54081# PAINT_EXTRAS still has to be brodcast because it changes the - // current sheet if it's invalid. All other flags added to pPaintLockData. - sal_uInt16 nLockPart = nPart & ~PAINT_EXTRAS; - if ( nLockPart ) + if ( pPaintLockData ) { - //! nExtFlags ??? - pPaintLockData->AddRange( ScRange( nCol1, nRow1, nTab1, - nCol2, nRow2, nTab2 ), nLockPart ); - } + // #i54081# PAINT_EXTRAS still has to be brodcast because it changes the + // current sheet if it's invalid. All other flags added to pPaintLockData. + sal_uInt16 nLockPart = nPart & ~PAINT_EXTRAS; + if ( nLockPart ) + { + //! nExtFlags ??? + pPaintLockData->AddRange( ScRange( nCol1, nRow1, nTab1, + nCol2, nRow2, nTab2 ), nLockPart ); + } - nPart &= PAINT_EXTRAS; // for broadcasting - if ( !nPart ) - return; - } + nPart &= PAINT_EXTRAS; // for broadcasting + if (!nPart) + continue; + } - if (nExtFlags & SC_PF_LINES) // Platz fuer Linien beruecksichtigen - { - //! Abfrage auf versteckte Spalten/Zeilen! - if (nCol1>0) --nCol1; - if (nCol20) --nRow1; - if (nRow20) --nCol1; + if (nCol20) --nRow1; + if (nRow2