sc/source/core/data/column.cxx | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-)
New commits: commit c5d188a7cbd4f0e85e4911ce3d97c606d07de4f2 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Wed May 8 16:04:50 2013 -0400 Simplify this a bit. By taking advantage of 1) cell array being std::vector, and 2) broadcasters are no longer stored with cells. Change-Id: I9ba1d3004e62d7bb7810d8fed0c4e8fd17605d0f diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 97b361e..af373d6 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -1194,29 +1194,14 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize ) if (bCountChanged) { - SCSIZE nDelCount = maItems.size() - nNewCount; - ScBaseCell** ppDelCells = new ScBaseCell*[nDelCount]; - SCROW* pDelRows = new SCROW[nDelCount]; - for (i = 0; i < nDelCount; i++) - { - ppDelCells[i] = maItems[nNewCount+i].pCell; - pDelRows[i] = maItems[nNewCount+i].nRow; - } - maItems.resize( nNewCount ); - - for (i = 0; i < nDelCount; i++) - { - SCROW nDelRow = pDelRows[i]; - SvtBroadcaster* pBC = GetBroadcaster(nDelRow); - if (pBC) - { - MoveListeners( *pBC, pDelRows[i] - nSize ); - ppDelCells[i]->Delete(); - } - } - - delete [] pDelRows; - delete [] ppDelCells; + // Some cells in the lower part of the cell array have been pushed out + // beyond MAXROW. Delete them. + std::vector<ColEntry>::iterator itBeg = maItems.begin(); + std::advance(itBeg, nNewCount); + for (std::vector<ColEntry>::iterator it = itBeg; it != maItems.end(); ++it) + it->pCell->Delete(); + + maItems.erase(itBeg, maItems.end()); } pDocument->SetAutoCalc( bOldAutoCalc ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits