OSDN Git Service

GhostTextBuffer.*: Remove some duplicate code #2
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Thu, 5 May 2016 08:54:55 +0000 (17:54 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Thu, 5 May 2016 08:54:55 +0000 (17:54 +0900)
Externals/crystaledit/editlib/ccrystaltextbuffer.cpp
Externals/crystaledit/editlib/ccrystaltextbuffer.h
Src/GhostTextBuffer.cpp
Src/GhostTextBuffer.h

index 5a35074..0db8f7a 100644 (file)
@@ -1412,9 +1412,7 @@ Undo (CCrystalTextView * pSource, CPoint & ptCursorPos)
         }
 
       // restore line revision numbers
-      int naSavedRevisonNumbersSize = (int) ur.m_paSavedRevisonNumbers->GetSize();
-      for (int i = 0; i < naSavedRevisonNumbersSize; i++)
-        m_aLines[ur.m_ptStartPos.y + i].m_dwRevisionNumber = (*ur.m_paSavedRevisonNumbers)[i];
+      RestoreRevisionNumbers(ur.m_ptStartPos.y, ur.m_paSavedRevisonNumbers);
 
       if (ur.m_dwFlags & UNDO_BEGINGROUP)
         break;
@@ -1699,6 +1697,13 @@ CopyRevisionNumbers(int nStartLine, int nEndLine) const
   return paSavedRevisonNumbers;
 }
 
+void CCrystalTextBuffer::
+RestoreRevisionNumbers(int nStartLine, CDWordArray *paSavedRevisonNumbers)
+{
+  for (int i = 0; i < paSavedRevisonNumbers->GetSize(); i++)
+       m_aLines[nStartLine + i].m_dwRevisionNumber = (*paSavedRevisonNumbers)[i];
+}
+
 bool CCrystalTextBuffer::
 DeleteText2 (CCrystalTextView * pSource, int nStartLine, int nStartChar,
             int nEndLine, int nEndChar, int nAction, bool bHistory /*=true*/)
index b8840f5..2a9a8fb 100644 (file)
@@ -187,6 +187,7 @@ public :
     virtual UndoRecord GetUndoRecord (int nUndoPos) const;
 
     virtual CDWordArray *CopyRevisionNumbers(int nStartLine, int nEndLine) const;
+    virtual void RestoreRevisionNumbers(int nStartLine, CDWordArray *psaSavedRevisionNumbers);
 
     //  Overridable: provide action description
     virtual bool GetActionDescription (int nAction, CString & desc) const;
index a21c38d..8512a6c 100644 (file)
@@ -367,6 +367,19 @@ CopyRevisionNumbers(int nStartLine, int nEndLine) const
        return paSavedRevisonNumbers;
 }
 
+void CGhostTextBuffer::
+RestoreRevisionNumbers(int nStartLine, CDWordArray *paSavedRevisonNumbers)
+{
+       for (int i = 0, j = 0; i < paSavedRevisonNumbers->GetSize(); j++)
+       {
+               if ((GetLineFlags(nStartLine + j) & LF_GHOST) == 0)
+               {
+                       m_aLines[nStartLine + j].m_dwRevisionNumber = (*paSavedRevisonNumbers)[i];
+                       ++i;
+               }
+       }
+}
+
 bool CGhostTextBuffer::
 DeleteText2 (CCrystalTextView * pSource, int nStartLine, int nStartChar,
             int nEndLine, int nEndChar, int nAction, bool bHistory /*=true*/)
index 3808f03..e4ba8f1 100644 (file)
@@ -90,6 +90,7 @@ public :
        virtual UndoRecord GetUndoRecord(int nUndoPos) const;
 
        virtual CDWordArray *CopyRevisionNumbers(int nStartLine, int nEndLine) const;
+       virtual void RestoreRevisionNumbers(int nStartLine, CDWordArray *paSavedRevisonNumbers);
 
 public:
        //@{