OSDN Git Service

PATCH: [ 717688 ] CrystalEditor optimisations and memleaks - fix tab bug.
authorKimmo Varis <kimmov@gmail.com>
Thu, 10 Apr 2003 18:57:04 +0000 (18:57 +0000)
committerKimmo Varis <kimmov@gmail.com>
Thu, 10 Apr 2003 18:57:04 +0000 (18:57 +0000)
Src/editlib/ccrystaltextview.cpp
Src/readme.txt

index 3426f03..7c53029 100644 (file)
@@ -773,13 +773,23 @@ ExpandChars (LPCTSTR pszChars, int nOffset, int nCount, CString & line)
       return;
     }
 
-  int nTabSize = GetTabSize();
+  const int nTabSize = GetTabSize ();
+
+  // Calculate offset from begin of line
+  int nActualOffset = 0;
+  for (int i = 0; i < nOffset; i++)
+    {
+      if (pszChars[i] == _T ('\t'))
+        nActualOffset += (nTabSize - nActualOffset % nTabSize);
+      else
+        nActualOffset++;
+    }
 
   pszChars += nOffset;
   int nLength = nCount;
 
   int nTabCount = 0;
-  for (int i = 0; i < nLength; i++)
+  for (i = 0; i < nLength; i++)
     {
       if (pszChars[i] == _T('\t'))
         nTabCount++;
@@ -794,7 +804,7 @@ ExpandChars (LPCTSTR pszChars, int nOffset, int nCount, CString & line)
         {
           if (pszChars[i] == _T('\t'))
             {
-              int nSpaces = nTabSize - nCurPos % nTabSize;
+              int nSpaces = nTabSize - (nActualOffset + nCurPos) % nTabSize;
               if (m_bViewTabs)
                 {
                   pszBuf[nCurPos++] = TAB_CHARACTER;
index 04950e6..f09b240 100644 (file)
@@ -1,3 +1,8 @@
+2003-04-10 Kimmo
+ PATCH: [ 717688 ] CrystalEditor optimisations and memleaks
+  fix tab bug.
+  editlib: ccrystaltextview.cpp
+
 2003-04-09 Kimmo
  PATCH: [ 717688 ] CrystalEditor optimisations and memleaks
   editlib: ccrystaltextview.cpp