[Libreoffice-commits] .: Branch 'feature/unlimited-number-of-sheets' - sc/source
Markus Mohrhard
mmohrhard at kemper.freedesktop.org
Mon May 23 19:25:24 PDT 2011
sc/source/core/data/documen2.cxx | 8 ----
sc/source/core/data/documen4.cxx | 8 ++--
sc/source/core/data/documen5.cxx | 2 -
sc/source/core/data/document.cxx | 74 +++++++++++++++++++++------------------
4 files changed, 48 insertions(+), 44 deletions(-)
New commits:
commit 5a5e7127a09e66c7c4ed31d9017d2823b3bddee6
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Tue May 24 04:20:36 2011 +0200
fix all TODO:REWORK inserted by my last commits
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 7677784..bc2bdbb 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -744,7 +744,7 @@ sal_Bool ScDocument::GetDataStart( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRo
return false;
}
-sal_Bool ScDocument::MoveTab( SCTAB nOldPos, SCTAB nNewPos )//TODO:REWORK
+sal_Bool ScDocument::MoveTab( SCTAB nOldPos, SCTAB nNewPos )
{
if (nOldPos == nNewPos) return false;
sal_Bool bValid = false;
@@ -792,12 +792,6 @@ sal_Bool ScDocument::MoveTab( SCTAB nOldPos, SCTAB nNewPos )//TODO:REWORK
SCTAB i;
pTab.erase(pTab.begin()+nOldPos);
pTab.insert(pTab.begin()+nNewPos, pSaveTab);
-// for (i = nOldPos + 1; i < nTabCount; i++)
-// pTab[i - 1] = pTab[i];
-// pTab[i-1] = NULL;
-// for (i = nTabCount - 1; i > nNewPos; i--)
-// pTab[i] = pTab[i - 1];
-// pTab[nNewPos] = pSaveTab;
for (i = 0; i < static_cast<SCTAB>(pTab.size()); i++)
if (pTab[i])
pTab[i]->UpdateMoveTab( nOldPos, nNewPos, i, *pProgress );
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index 42ceef9..ea32f48 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -62,14 +62,16 @@ using namespace formula;
// -----------------------------------------------------------------------
// Nach der Regula Falsi Methode
-sal_Bool ScDocument::Solver(SCCOL nFCol, SCROW nFRow, SCTAB nFTab,//TODO:REWORK
+sal_Bool ScDocument::Solver(SCCOL nFCol, SCROW nFRow, SCTAB nFTab,
SCCOL nVCol, SCROW nVRow, SCTAB nVTab,
const String& sValStr, double& nX)
{
sal_Bool bRet = false;
nX = 0.0;
if (ValidColRow(nFCol, nFRow) && ValidColRow(nVCol, nVRow) &&
- VALIDTAB(nFTab) && VALIDTAB(nVTab) && pTab[nFTab] && pTab[nVTab])
+ VALIDTAB(nFTab) && VALIDTAB(nVTab) &&
+ nFTab < static_cast<SCTAB>(pTab.size()) && pTab[nFTab] &&
+ nVTab < static_cast<SCTAB>(pTab.size()) && pTab[nVTab])
{
CellType eFType, eVType;
GetCellType(nFCol, nFRow, nFTab, eFType);
@@ -962,7 +964,7 @@ void ScDocument::FindOrder( SCCOLROW* pOtherRows, SCCOLROW nThisEndRow, SCCOLROW
}
}
-void ScDocument::CompareDocument( ScDocument& rOtherDoc )//TODO:REWORK
+void ScDocument::CompareDocument( ScDocument& rOtherDoc )
{
if (!pChangeTrack)
return;
diff --git a/sc/source/core/data/documen5.cxx b/sc/source/core/data/documen5.cxx
index f07fdd3..07ea3cd 100644
--- a/sc/source/core/data/documen5.cxx
+++ b/sc/source/core/data/documen5.cxx
@@ -208,7 +208,7 @@ sal_Bool ScDocument::HasChartAtPoint( SCTAB nTab, const Point& rPos, String* pNa
{
if (pDrawLayer && nTab < static_cast<SCTAB>(pTab.size()) && pTab[nTab])
{
- SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));//TODO:REWORK
+ SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));
DBG_ASSERT(pPage,"Page ?");
SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 527cc09..09a2329 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -361,7 +361,7 @@ sal_Bool ScDocument::InsertTab( SCTAB nPos, const String& rName,
}
else
{
- if (VALIDTAB(nPos) && (nPos < nTabCount))//TODO:REWORK
+ if (VALIDTAB(nPos) && (nPos < nTabCount))
{
ScRange aRange( 0,0,nPos, MAXCOL,MAXROW,MAXTAB );
xColNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,1 );
@@ -1467,14 +1467,20 @@ void ScDocument::InitUndo( ScDocument* pSrcDoc, SCTAB nTab1, SCTAB nTab2,
}
-void ScDocument::AddUndoTab( SCTAB nTab1, SCTAB nTab2, sal_Bool bColInfo, sal_Bool bRowInfo )//TODO:REWORK
+void ScDocument::AddUndoTab( SCTAB nTab1, SCTAB nTab2, sal_Bool bColInfo, sal_Bool bRowInfo )
{
if (bIsUndo)
{
String aString;
for (SCTAB nTab = nTab1; nTab <= nTab2; nTab++)
- if (!pTab[nTab])
+ if (nTab >= static_cast<SCTAB>(pTab.size()) || !pTab[nTab])
+ {
+ while(nTab >= static_cast<SCTAB>(pTab.size()))
+ {
+ pTab.push_back(NULL);
+ }
pTab[nTab] = new ScTable(this, nTab, aString, bColInfo, bRowInfo);
+ }
if ( nMaxTableNumber <= nTab2 )
nMaxTableNumber = nTab2 + 1;
@@ -1535,7 +1541,7 @@ void ScDocument::CopyToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
}
-void ScDocument::UndoToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,//TODO:REWORK
+void ScDocument::UndoToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
SCCOL nCol2, SCROW nRow2, SCTAB nTab2,
sal_uInt16 nFlags, sal_Bool bOnlyMarked, ScDocument* pDestDoc,
const ScMarkData* pMarks)
@@ -1550,6 +1556,7 @@ void ScDocument::UndoToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,//TODO:REW
if (nTab1 > 0)
CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTab1-1, IDF_FORMULA, false, pDestDoc, pMarks );
+ OSL_ASSERT( nTab2 < static_cast<SCTAB>(pTab.size()) && nTab2 < static_cast<SCTAB>(pDestDoc->pTab.size()));
for (SCTAB i = nTab1; i <= nTab2; i++)
{
if (pTab[i] && pDestDoc->pTab[i])
@@ -1564,7 +1571,7 @@ void ScDocument::UndoToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,//TODO:REW
}
-void ScDocument::CopyToDocument(const ScRange& rRange,//TODO:REWORK
+void ScDocument::CopyToDocument(const ScRange& rRange,
sal_uInt16 nFlags, sal_Bool bOnlyMarked, ScDocument* pDestDoc,
const ScMarkData* pMarks, sal_Bool bColRowFlags)
{
@@ -1658,7 +1665,7 @@ void ScDocument::CopyToClip(const ScClipParam& rClipParam,
}
// Copy the content of the Range into clipboard. Adding this method for VBA API: Range.Copy().
-void ScDocument::CopyToClip4VBA(const ScClipParam& rClipParam, ScDocument* pClipDoc, bool bKeepScenarioFlags, bool bIncludeObjects, bool bCloneNoteCaptions)//TODO:REWORK
+void ScDocument::CopyToClip4VBA(const ScClipParam& rClipParam, ScDocument* pClipDoc, bool bKeepScenarioFlags, bool bIncludeObjects, bool bCloneNoteCaptions)
{
if ( !bIsClip )
{
@@ -1674,17 +1681,17 @@ void ScDocument::CopyToClip4VBA(const ScClipParam& rClipParam, ScDocument* pClip
pClipDoc->ResetClip( this, nTab );
CopyRangeNamesToClip( pClipDoc, aClipRange, nTab );
-
- if ( pTab[nTab] && pClipDoc->pTab[nTab] )
- {
- pTab[nTab]->CopyToClip( rClipParam.maRanges, pClipDoc->pTab[nTab], bKeepScenarioFlags, bCloneNoteCaptions );
- if ( pDrawLayer && bIncludeObjects )
+ if ( nTab < static_cast<SCTAB>(pTab.size()) && nTab < static_cast<SCTAB>(pCipDoc->pTab.size()) )
+ if ( pTab[nTab] && pClipDoc->pTab[nTab] )
{
- // Also copy drawing objects.
- Rectangle aObjRect = GetMMRect( aClipRange.aStart.Col(), aClipRange.aStart.Row(), aClipRange.aEnd.Col(), aClipRange.aEnd.Row(), nTab );
- pDrawLayer->CopyToClip( pClipDoc, nTab, aObjRect );
+ pTab[nTab]->CopyToClip( rClipParam.maRanges, pClipDoc->pTab[nTab], bKeepScenarioFlags, bCloneNoteCaptions );
+ if ( pDrawLayer && bIncludeObjects )
+ {
+ // Also copy drawing objects.
+ Rectangle aObjRect = GetMMRect( aClipRange.aStart.Col(), aClipRange.aStart.Row(), aClipRange.aEnd.Col(), aClipRange.aEnd.Row(), nTab );
+ pDrawLayer->CopyToClip( pClipDoc, nTab, aObjRect );
+ }
}
- }
// Make sure to mark overlapped cells.
pClipDoc->ExtendMerge( aClipRange, true );
@@ -2030,7 +2037,7 @@ void ScDocument::BroadcastFromClip( SCCOL nCol1, SCROW nRow1,
}
}
-void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,//TODO:REWORK
+void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,
SCCOL nCol2, SCROW nRow2,
const ScMarkData& rMark,
SCsCOL nDx, SCsROW nDy,
@@ -2039,11 +2046,11 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,//TODO:REWORK
::std::vector<ScTable*>& ppClipTab = pCBFCP->pClipDoc->pTab;
SCTAB nTabEnd = pCBFCP->nTabEnd;
SCTAB nClipTab = 0;
- for (SCTAB i = pCBFCP->nTabStart; i <= nTabEnd; i++)
+ for (SCTAB i = pCBFCP->nTabStart; i <= nTabEnd && i < static_cast<SCTAB>(pTab.size()); i++)
{
if (pTab[i] && rMark.GetTableSelect(i) )
{
- while (!ppClipTab[nClipTab]) nClipTab = (nClipTab+1) % (MAXTAB+1);
+ while (!ppClipTab[nClipTab]) nClipTab = (nClipTab+1) % (static_cast<SCTAB>(pTab.size()));
pTab[i]->CopyFromClip( nCol1, nRow1, nCol2, nRow2, nDx, nDy,
pCBFCP->nInsFlag, pCBFCP->bAsLink, pCBFCP->bSkipAttrForEmpty, ppClipTab[nClipTab] );
@@ -2069,17 +2076,17 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,//TODO:REWORK
}
}
- nClipTab = (nClipTab+1) % (MAXTAB+1);
+ nClipTab = (nClipTab+1) % (static_cast<SCTAB>(pTab.size()));
}
}
if ( pCBFCP->nInsFlag & IDF_CONTENTS )
{
nClipTab = 0;
- for (SCTAB i = pCBFCP->nTabStart; i <= nTabEnd; i++)
+ for (SCTAB i = pCBFCP->nTabStart && i < static_cast<SCTAB>(pTab.size()); i <= nTabEnd; i++)
{
if (pTab[i] && rMark.GetTableSelect(i) )
{
- while (!ppClipTab[nClipTab]) nClipTab = (nClipTab+1) % (MAXTAB+1);
+ while (!ppClipTab[nClipTab]) nClipTab = (nClipTab+1) % (static_cast<SCTAB>(pTab.size()));
SCsTAB nDz = ((SCsTAB)i) - nClipTab;
// ranges of consecutive selected tables (in clipboard and dest. doc)
@@ -2105,7 +2112,7 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,//TODO:REWORK
nCol1, nRow1, i, nCol2, nRow2, i+nFollow,
nDx, nDy, nDz, pCBFCP->pRefUndoDoc, false );
- nClipTab = (nClipTab+nFollow+1) % (MAXTAB+1);
+ nClipTab = (nClipTab+nFollow+1) % (static_cast<SCTAB>(pTab.size()));
i = sal::static_int_cast<SCTAB>( i + nFollow );
}
}
@@ -2113,7 +2120,7 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,//TODO:REWORK
}
-void ScDocument::CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1,//TODO:REWORK
+void ScDocument::CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1,
SCCOL nCol2, SCROW nRow2,
const ScMarkData& rMark,
SCsCOL nDx, SCsROW /* nDy */,
@@ -2126,7 +2133,7 @@ void ScDocument::CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1,//TODO:REWORK
// filtered state is taken from first used table in clipboard (as in GetClipArea)
SCTAB nFlagTab = 0;
std::vector<ScTable*>& ppClipTab = pCBFCP->pClipDoc->pTab;
- while ( nFlagTab < MAXTAB && !ppClipTab[nFlagTab] )
+ while ( nFlagTab < static_cast<SCTAB>(ppClipTab.size()) && !ppClipTab[nFlagTab] )
++nFlagTab;
SCROW nSourceRow = rClipStartRow;
@@ -2602,13 +2609,13 @@ sal_Bool ScDocument::HasClipFilteredRows()
}
-void ScDocument::MixDocument( const ScRange& rRange, sal_uInt16 nFunction, sal_Bool bSkipEmpty,//TODO:REWORK
+void ScDocument::MixDocument( const ScRange& rRange, sal_uInt16 nFunction, sal_Bool bSkipEmpty,
ScDocument* pSrcDoc )
{
SCTAB nTab1 = rRange.aStart.Tab();
SCTAB nTab2 = rRange.aEnd.Tab();
- for (SCTAB i = nTab1; i <= nTab2; i++)
- if (pTab[i] && pSrcDoc->pTab[i])
+ for (SCTAB i = nTab1; i <= nTab2 && i < static_cast<SCTAB>(pTab.size()); i++)
+ if (pTab[i] && i < static_cast<SCTAB>(pSrcDoc->pTab.size()) && pSrcDoc->pTab[i])
pTab[i]->MixData( rRange.aStart.Col(), rRange.aStart.Row(),
rRange.aEnd.Col(), rRange.aEnd.Row(),
nFunction, bSkipEmpty, pSrcDoc->pTab[i] );
@@ -2732,18 +2739,19 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark,
}
-void ScDocument::PutCell( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell, sal_Bool bForceTab )//TODO:REWORK
+void ScDocument::PutCell( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell, sal_Bool bForceTab )
{
if (VALIDTAB(nTab))
{
- if ( bForceTab && !pTab[nTab] )
+ if ( bForceTab && ( nTab >= static_cast<SCTAB>(pTab.size()) || !pTab[nTab]) )
{
sal_Bool bExtras = !bIsUndo; // Spaltenbreiten, Zeilenhoehen, Flags
+ while(nTab >= static_cast<SCTAB>(pTab.size()))
+ pTab.push_back(NULL);
pTab[nTab] = new ScTable(this, nTab,
String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("temp")),
bExtras, bExtras);
- ++nMaxTableNumber;
}
if (pTab[nTab])
@@ -2752,17 +2760,17 @@ void ScDocument::PutCell( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell,
}
-void ScDocument::PutCell( const ScAddress& rPos, ScBaseCell* pCell, sal_Bool bForceTab )//TODO:REWORK
+void ScDocument::PutCell( const ScAddress& rPos, ScBaseCell* pCell, sal_Bool bForceTab )
{
SCTAB nTab = rPos.Tab();
- if ( bForceTab && !pTab[nTab] )
+ if ( bForceTab && ( nTab >= static_cast<SCTAB>(pTab.size()) || !pTab[nTab]) )
{
sal_Bool bExtras = !bIsUndo; // Spaltenbreiten, Zeilenhoehen, Flags
+ while(nTab >= static_cast<SCTAB>(pTab.size()))
pTab[nTab] = new ScTable(this, nTab,
String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("temp")),
bExtras, bExtras);
- ++nMaxTableNumber;
}
if (pTab[nTab])
More information about the Libreoffice-commits
mailing list