sc/qa/unit/ucalc.cxx | 9 +++++++-- sc/source/core/data/column3.cxx | 9 +++++---- 2 files changed, 12 insertions(+), 6 deletions(-)
New commits: commit beb36701ee8dd218523caeb5510792e5efe93f80 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Wed May 8 00:06:08 2013 -0400 The same thing applies in reverse direction. Change-Id: I3f5863d79ad948461d63dbc9addc8ca01e1b275e diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index ffb2c47..d123a6c 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -1653,8 +1653,13 @@ void Test::testCellBroadcaster() // While column A is still empty, move column A down 2 cells. This should // move the broadcaster from A1 to A3. m_pDoc->InsertRow(0, 0, 0, 0, 0, 2); - pBC = m_pDoc->GetBroadcaster(ScAddress(0,2,0)); - CPPUNIT_ASSERT_MESSAGE("Broadcaster should exist in A3.", pBC); + CPPUNIT_ASSERT_MESSAGE("Broadcaster relocation failed.", + broadcasterShifted(*m_pDoc, ScAddress(0,0,0), ScAddress(0,2,0))); + + // Move it back while column A is still empty. + m_pDoc->DeleteRow(0, 0, 0, 0, 0, 2); + CPPUNIT_ASSERT_MESSAGE("Broadcaster relocation failed.", + broadcasterShifted(*m_pDoc, ScAddress(0,2,0), ScAddress(0,0,0))); m_pDoc->DeleteTab(0); } diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 1c36346..9290e3a 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -164,8 +164,13 @@ void ScColumn::FreeAll() void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize ) { + SCROW nEndRow = nStartRow + nSize - 1; + pAttrArray->DeleteRow( nStartRow, nSize ); + maBroadcasters.erase(nStartRow, nEndRow); + maBroadcasters.resize(MAXROWCOUNT); + if ( maItems.empty() ) return ; @@ -178,12 +183,10 @@ void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize ) pDocument->SetAutoCalc( false ); // Avoid calculating it multiple times bool bFound = false; - SCROW nEndRow = nStartRow + nSize - 1; SCSIZE nStartIndex = 0; SCSIZE nEndIndex = 0; SCSIZE i; - maBroadcasters.set_empty(nStartRow, nEndRow); for ( i = nFirstIndex; i < maItems.size() && maItems[i].nRow <= nEndRow; i++ ) { @@ -215,8 +218,6 @@ void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize ) maTextWidths.resize(MAXROWCOUNT); maScriptTypes.erase(nStartRow, nEndRow); maScriptTypes.resize(MAXROWCOUNT); - maBroadcasters.erase(nStartRow, nEndRow); - maBroadcasters.resize(MAXROWCOUNT); ScAddress aAdr( nCol, 0, nTab ); ScHint aHint( SC_HINT_DATACHANGED, aAdr, NULL ); // only areas (ScBaseCell* == NULL) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits