[Libreoffice-commits] .: 2 commits - sc/inc sc/source
Markus Mohrhard
mmohrhard at kemper.freedesktop.org
Thu Mar 1 17:05:19 PST 2012
sc/inc/column.hxx | 2 +-
sc/inc/postit.hxx | 4 ++--
sc/source/core/data/column.cxx | 5 ++---
sc/source/core/data/postit.cxx | 11 +++++++----
sc/source/core/data/table2.cxx | 6 +++---
5 files changed, 15 insertions(+), 13 deletions(-)
New commits:
commit 921fb226d2836673c1d3ef0f254708a5c5c0b313
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Fri Mar 2 01:59:01 2012 +0100
fix crashs in undo/redo realted to note captions
diff --git a/sc/inc/postit.hxx b/sc/inc/postit.hxx
index 16746d6..1b370ce 100644
--- a/sc/inc/postit.hxx
+++ b/sc/inc/postit.hxx
@@ -297,7 +297,7 @@ public:
bool insert( SCCOL nCol, SCROW nRow, ScPostIt* );
bool insert( const ScAddress& rPos, ScPostIt* );
- void erase(SCCOL, SCROW);
+ void erase(SCCOL, SCROW, bool bForgetCaption = false);
void erase(const ScAddress& rPos);
/** Returns and forgets the cell note object at the passed cell address. */
@@ -311,7 +311,7 @@ public:
ScNotes* clone(ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bCloneNoteCaption, SCTAB nTab);
void CopyFromClip(const ScNotes& maNotes, ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCsCOL nDx, SCsROW nDy, SCTAB nTab, bool bCloneCaption);
- void erase(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
+ void erase(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bForgetCaption = false);
};
diff --git a/sc/source/core/data/postit.cxx b/sc/source/core/data/postit.cxx
index 8ecacfa..8a0677f 100644
--- a/sc/source/core/data/postit.cxx
+++ b/sc/source/core/data/postit.cxx
@@ -1009,11 +1009,14 @@ bool ScNotes::insert(const ScAddress& rPos, ScPostIt* pPostIt)
return insert(rPos.Col(), rPos.Row(), pPostIt);
}
-void ScNotes::erase(SCCOL nCol, SCROW nRow)
+void ScNotes::erase(SCCOL nCol, SCROW nRow, bool bForgetCaption)
{
iterator itr = maNoteMap.find(std::pair<SCCOL, SCROW>(nCol, nRow));
if (itr != maNoteMap.end())
{
+ if (bForgetCaption)
+ itr->second->ForgetCaption();
+
delete itr->second;
maNoteMap.erase(itr);
}
@@ -1088,12 +1091,12 @@ void ScNotes::CopyFromClip(const ScNotes& rNotes, ScDocument* pDoc, SCCOL nCol1,
if (nCol+nDx >= nCol1 && nCol+nDx <= nCol2 && nRow+nDy >= nRow1 && nRow+nDy <= nRow2)
{
erase(nCol+nDx, nRow+nDy);
- insert(nCol+nDx, nRow+nDy, itr->second->Clone( ScAddress(nCol, nRow, nTab), *pDoc, ScAddress(nCol, nRow, nTab), bCloneCaption ));
+ insert(nCol+nDx, nRow+nDy, itr->second->Clone( ScAddress(nCol, nRow, nTab), *pDoc, ScAddress(nCol+nDx, nRow+nDy, nTab), bCloneCaption ));
}
}
}
-void ScNotes::erase(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
+void ScNotes::erase(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bForgetCaption)
{
ScNotes::iterator itr = maNoteMap.begin();
while(itr != maNoteMap.end())
@@ -1103,7 +1106,7 @@ void ScNotes::erase(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
++itr;
if (nCol >= nCol1 && nCol <= nCol2 && nRow >= nRow1 && nRow <= nRow2)
{
- erase(nCol, nRow);
+ erase(nCol, nRow, bForgetCaption);
}
}
}
diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx
index 4cc42f6..19fa547 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -537,7 +537,7 @@ void ScTable::DeleteArea(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, sal
}
if (nDelFlag & IDF_NOTE)
- maNotes.erase( nCol1, nRow1, nCol2, nRow2);
+ maNotes.erase( nCol1, nRow1, nCol2, nRow2, true );
if (IsStreamValid())
// TODO: In the future we may want to check if the table has been
@@ -561,7 +561,7 @@ void ScTable::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark )
{
ScRange* pRange = aRangeList[i];
if (nDelFlag & IDF_NOTE && pRange)
- maNotes.erase(pRange->aStart.Col(), pRange->aStart.Row(), pRange->aEnd.Col(), pRange->aEnd.Row());
+ maNotes.erase(pRange->aStart.Col(), pRange->aStart.Row(), pRange->aEnd.Col(), pRange->aEnd.Row(), true);
}
//
commit 1d1141cd06fcdbadd008744a28674d4b50457923
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Fri Mar 2 01:09:56 2012 +0100
remove unnecessary parameter
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 8d715fb..e503005 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -194,7 +194,7 @@ public:
void DeleteRow( SCROW nStartRow, SCSIZE nSize );
void DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDelFlag );
void DeleteArea(SCROW nStartRow, SCROW nEndRow, sal_uInt16 nDelFlag );
- void CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKeepScenarioFlags, bool bCloneNoteCaptions);
+ void CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKeepScenarioFlags);
void CopyFromClip(SCROW nRow1, SCROW nRow2, long nDy,
sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScColumn& rColumn);
void StartListeningInArea( SCROW nRow1, SCROW nRow2 );
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index c0becb6..10c3e5d 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1182,7 +1182,7 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize )
}
-void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKeepScenarioFlags, bool bCloneNoteCaptions)
+void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKeepScenarioFlags)
{
pAttrArray->CopyArea( nRow1, nRow2, 0, *rColumn.pAttrArray,
bKeepScenarioFlags ? (SC_MF_ALL & ~SC_MF_SCENARIO) : SC_MF_ALL );
@@ -1211,7 +1211,6 @@ void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKee
if (nBlockCount)
{
- int nCloneFlags = bCloneNoteCaptions ? SC_CLONECELL_DEFAULT : SC_CLONECELL_NOCAPTION;
rColumn.Resize( rColumn.GetCellCount() + nBlockCount );
ScAddress aOwnPos( nCol, 0, nTab );
ScAddress aDestPos( rColumn.nCol, 0, rColumn.nTab );
@@ -1219,7 +1218,7 @@ void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKee
{
aOwnPos.SetRow( maItems[i].nRow );
aDestPos.SetRow( maItems[i].nRow );
- ScBaseCell* pNewCell = maItems[i].pCell->Clone( *rColumn.pDocument, aDestPos, nCloneFlags );
+ ScBaseCell* pNewCell = maItems[i].pCell->Clone( *rColumn.pDocument, aDestPos, SC_CLONECELL_DEFAULT );
rColumn.Append( aDestPos.Row(), pNewCell );
}
}
diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx
index c2597f1..4cc42f6 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -601,7 +601,7 @@ void ScTable::CopyToClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
SCCOL i;
for ( i = nCol1; i <= nCol2; i++)
- aCol[i].CopyToClip(nRow1, nRow2, pTable->aCol[i], bKeepScenarioFlags, bCloneNoteCaptions);
+ aCol[i].CopyToClip(nRow1, nRow2, pTable->aCol[i], bKeepScenarioFlags);
// copy widths/heights, and only "hidden", "filtered" and "manual" flags
// also for all preceding columns/rows, to have valid positions for drawing objects
More information about the Libreoffice-commits
mailing list