Small part of one of tasks in "easy tasks" list.

This is my first patch to LibreOffice so I'd be grateful for feedback on any 
issues.

Released under LGPLv3+/MPL

---
 sw/inc/undobj.hxx             |    4 ++--
 sw/source/core/undo/unnum.cxx |   16 ++++++----------
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/sw/inc/undobj.hxx b/sw/inc/undobj.hxx
index 2252de9..e6ea274 100644
--- a/sw/inc/undobj.hxx
+++ b/sw/inc/undobj.hxx
@@ -1371,8 +1371,8 @@ public:
 
 class SwUndoDelNum : public SwUndo, private SwUndRng
 {
-    SvULongs aNodeIdx;
-    SvBytes aLevels;
+    typedef std::vector< std::pair< ULONG, int > > SvNode;
+    SvNode aNodes;
     SvBools aRstLRSpaces;
     SwHistory* pHistory;
 public:
diff --git a/sw/source/core/undo/unnum.cxx b/sw/source/core/undo/unnum.cxx
index bc2be15..d5afd1f 100644
--- a/sw/source/core/undo/unnum.cxx
+++ b/sw/source/core/undo/unnum.cxx
@@ -190,10 +190,9 @@ void SwUndoInsNum::SaveOldNumRule( const SwNumRule& rOld )
 
 
 SwUndoDelNum::SwUndoDelNum( const SwPaM& rPam )
-    : SwUndo( UNDO_DELNUM ), SwUndRng( rPam ),
-    aNodeIdx( BYTE( nEndNode - nSttNode > 255 ? 255 : nEndNode - nSttNode )),
-    aLevels( BYTE( nEndNode - nSttNode > 255 ? 255 : nEndNode - nSttNode ))
+    : SwUndo( UNDO_DELNUM ), SwUndRng( rPam )
 {
+    aNodes.reserve( nEndNode - nSttNode > 255 ? 255 : nEndNode - nSttNode );
     pHistory = new SwHistory;
 }
 
@@ -215,11 +214,11 @@ void SwUndoDelNum::Undo( SwUndoIter& rUndoIter )
     pHistory->TmpRollback( &rDoc, 0 );
     pHistory->SetTmpEnd( pHistory->Count() );
 
-    for( USHORT n = 0; n < aNodeIdx.Count(); ++n )
+    for( SvNode::const_iterator i = aNodes.begin(); i != aNodes.end(); ++i )
     {
-        SwTxtNode* pNd = rDoc.GetNodes()[ aNodeIdx[ n ] ]->GetTxtNode();
+        SwTxtNode* pNd = rDoc.GetNodes()[ i->first ]->GetTxtNode();
         OSL_ENSURE( pNd, "wo ist der TextNode geblieben?" );
-        pNd->SetAttrListLevel(aLevels[ n ] );
+        pNd->SetAttrListLevel( i->second );
 
         if( pNd->GetCondFmtColl() )
             pNd->ChkCondColl();
@@ -247,10 +246,7 @@ void SwUndoDelNum::AddNode( const SwTxtNode& rNd, BOOL )
 {
     if( rNd.GetNumRule() )
     {
-        USHORT nIns = aNodeIdx.Count();
-        aNodeIdx.Insert( rNd.GetIndex(), nIns );
-
-        aLevels.Insert( static_cast<BYTE>(rNd.GetActualListLevel()), nIns );
+        aNodes.push_back( SvNode::value_type( rNd.GetIndex(), rNd.GetActualListLevel() ) );
     }
 }
 
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to