sc/source/ui/navipi/content.cxx | 57 +++++++++++++--------------------------- 1 file changed, 19 insertions(+), 38 deletions(-)
New commits: commit 565cf66b93f264e4f6ef65184472c48abe7a9997 Author: Laurent Godard <lgodard.li...@laposte.net> Date: Fri Sep 13 09:42:58 2013 +0200 notes & navigator do not crash anymore these loops are suboptimal - need to refactor using iterator Change-Id: I26507a19b6acc0d319449a455c558bca3c444255 diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx index c09baeb..73ec095 100644 --- a/sc/source/ui/navipi/content.cxx +++ b/sc/source/ui/navipi/content.cxx @@ -867,18 +867,12 @@ void ScContentTree::GetNoteStrings() { for (SCCOL nCol=0; nCol<MAXCOLCOUNT; nCol++) { - sc::CellNoteStoreType& maNotes = pDoc->GetColNotes(nCol, nTab); - std::pair<sc::CellNoteStoreType::const_iterator,size_t> aPos = maNotes.position(0); - sc::CellNoteStoreType::const_iterator it = aPos.first; - size_t nOffset = aPos.second; - size_t nDataSize = 0; - size_t nCurRow = 0; - for (; it != maNotes.end(); ++it, nOffset = 0, nCurRow += nDataSize) + sc::CellNoteStoreType& maCellNotes = pDoc->GetColNotes(nCol, nTab); + for (SCROW nRow=0; nRow < MAXROWCOUNT; nRow++) // TODO : suboptimal { - nDataSize = it->size - nOffset; - sc::cellnote_block::const_iterator itData = sc::cellnote_block::begin(*it->data); - std::advance(itData, nOffset); - InsertContent(SC_CONTENT_NOTE, lcl_NoteString( **itData )); + ScPostIt* pNote = maCellNotes.get<ScPostIt*>(nRow); + if (pNote) + InsertContent(SC_CONTENT_NOTE, lcl_NoteString( *pNote )); } } } @@ -898,23 +892,19 @@ ScAddress ScContentTree::GetNotePos( sal_uLong nIndex ) for (SCCOL nCol=0; nCol<MAXCOLCOUNT; nCol++) { sc::CellNoteStoreType& maNotes = pDoc->GetColNotes(nCol, nTab); - std::pair<sc::CellNoteStoreType::const_iterator,size_t> aPos = maNotes.position(0); - sc::CellNoteStoreType::const_iterator it = aPos.first; - size_t nOffset = aPos.second; - size_t nDataSize = 0; - size_t nRow = 0; if (nFound + maNotes.size() >= nIndex) { - for (; it != maNotes.end(); ++it, nOffset = 0, nRow += nDataSize) + for (SCROW nRow=0; nRow < MAXROWCOUNT; nRow++) // TODO : suboptimal { - nDataSize = it->size - nOffset; if (nFound == nIndex) return ScAddress(nCol, nRow, nTab); ++nFound; } } else + { nFound += maNotes.size(); + } } } @@ -941,31 +931,22 @@ sal_Bool ScContentTree::NoteStringsChanged() { for (SCCOL nCol=0; nCol<MAXCOLCOUNT; nCol++) { - sc::CellNoteStoreType& maNotes = pDoc->GetColNotes(nCol, nTab); - std::pair<sc::CellNoteStoreType::const_iterator,size_t> aPos = maNotes.position(0); - sc::CellNoteStoreType::const_iterator it = aPos.first; - size_t nOffset = aPos.second; - size_t nDataSize = 0; - size_t nCurRow = 0; - for (; it != maNotes.end(); ++it, nOffset = 0, nCurRow += nDataSize) + sc::CellNoteStoreType& maCellNotes = pDoc->GetColNotes(nCol, nTab); + for (SCROW nRow=0; nRow<MAXROWCOUNT; nRow++) // TODO : suboptimal { - nDataSize = it->size - nOffset; - sc::cellnote_block::const_iterator itData = sc::cellnote_block::begin(*it->data); - std::advance(itData, nOffset); - const ScPostIt* pNote = *itData; - if (pNote) - { - if ( !pEntry ) - bEqual = false; - else + ScPostIt* pNote = maCellNotes.get<ScPostIt*>(nRow); + if (pNote) { - if ( lcl_NoteString( *pNote ) != GetEntryText(pEntry) ) + if ( !pEntry ) bEqual = false; + else + { + if ( lcl_NoteString( *pNote ) != GetEntryText(pEntry) ) + bEqual = false; - pEntry = NextSibling( pEntry ); + pEntry = NextSibling( pEntry ); + } } - } - } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits