SOURCES: kdelibs-branch.diff - updated

arekm arekm at pld-linux.org
Sat Jul 1 12:04:21 CEST 2006


Author: arekm                        Date: Sat Jul  1 10:04:21 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated

---- Files affected:
SOURCES:
   kdelibs-branch.diff (1.26 -> 1.27) 

---- Diffs:

================================================================
Index: SOURCES/kdelibs-branch.diff
diff -u SOURCES/kdelibs-branch.diff:1.26 SOURCES/kdelibs-branch.diff:1.27
--- SOURCES/kdelibs-branch.diff:1.26	Mon Apr  3 17:08:49 2006
+++ SOURCES/kdelibs-branch.diff	Sat Jul  1 12:04:16 2006
@@ -1,3278 +1,15372 @@
+Index: interfaces/kscript/sample/shellscript.desktop
+===================================================================
+--- interfaces/kscript/sample/shellscript.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ interfaces/kscript/sample/shellscript.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -62,6 +62,7 @@
+ Name[vi]=Báť™ chấy táş­p lᝇnh hᝇ vỏ Bash
+ Name[wa]=Enondeu di scripes shell bash
+ Name[zh_CN]=Bash Shell č„šćœŹčżčĄŒç¨‹ĺş
++Name[zh_TW]=Bash Shell Script ĺŸˇčĄŒĺ™¨
+ Type=Service
+ X-KDE-Library=libshellscript
+ X-KDE-Script-Runner=ShellScript/bash
+Index: interfaces/kimproxy/interface/dcopinstantmessenger.desktop
+===================================================================
+--- interfaces/kimproxy/interface/dcopinstantmessenger.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ interfaces/kimproxy/interface/dcopinstantmessenger.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -60,3 +60,4 @@
+ Comment[vi]=B᝙ tin nhắn tᝊc khắc có giao diᝇn DCOP
+ Comment[zh_CN]=希 DCOP ćŽĽĺŁçš„ĺłć—śé€ščŽŻç¨‹ĺş
+ Comment[zh_HK]=é™„ćœ‰ DCOP äť‹é˘çš„ĺłć™‚é€šč¨ŠčťŸäťś
++Comment[zh_TW]=DCOP äť‹é˘çš„ĺłć™‚é€šč¨Šçłťçľą
+Index: interfaces/kimproxy/interface/kcm_instantmessenger.desktop
+===================================================================
+--- interfaces/kimproxy/interface/kcm_instantmessenger.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ interfaces/kimproxy/interface/kcm_instantmessenger.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -48,6 +48,7 @@
+ Name[vi]=B᝙ tin nhắn tᝊc khắc
+ Name[zh_CN]=ĺłć—śé€ščŽŻç¨‹ĺş
+ Name[zh_HK]=ĺłć™‚é€šč¨ŠčťŸäťś
++Name[zh_TW]=ĺłć™‚é€šč¨Š
+ Comment=The instant messenger allows two-way chat between individuals and groups.
+ Comment[af]=Die oombliklike boodskappe laat twee rigting kommunikasie tussen individue en groepe toe.
+ Comment[bg]=РаСгОвОр ĐźĐľĐśĐ´Ńƒ раСНични Ń
Ора в роаНнО вроПо.
+@@ -105,6 +106,7 @@
+ Comment[vi]=Báť™ tin nhắn tᝊc khắc cho phĂŠp trò chuyᝇn hai chiᝁu giᝯa người riĂŞng vĂ  nhĂłm.
+ Comment[zh_CN]=ĺ
čŽ¸ĺœ¨ä¸Şäşşĺ’Œçž¤çť„äš‹é—´ĺŒĺ‘čŠĺ¤Šçš„ĺłć—śé€ščŽŻç¨‹ĺşă€‚
+ Comment[zh_HK]=ĺłć™‚é€šč¨ŠčťŸäťśĺŻäťĽčŽ“ç”¨ćˆśĺ’ŒĺˆĽçš„ç”¨ćˆśćˆ–çžŁçľ„é€šč¨Šă€‚
++Comment[zh_TW]=ĺłć™‚é€šč¨Šçłťçľąĺ
č¨ąĺ
Šĺ€‹äşşćˆ–ĺ
Šĺ€‹çž¤çľ„é–“çš„čŠĺ¤Ščˆ‡ĺ°čŠą
+ ServiceTypeToConfigure=DCOP/InstantMessenger
+ MimeTypeOfInterest=DCOP/InstantMessenger
+ defaultImplementation=kopete
+Index: interfaces/kspeech/dcoptexttospeech.desktop
+===================================================================
+--- interfaces/kspeech/dcoptexttospeech.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ interfaces/kspeech/dcoptexttospeech.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -57,3 +57,4 @@
+ Comment[vi]=Dáť‹ch v᝼ Văn bản sang Tiáşżng nĂłi cĂł giao diᝇn DCOP
+ Comment[zh_CN]=希 DCOP ćŽĽĺŁçš„ć–‡ćœŹĺˆ°čŻ­éŸłćœĺŠĄ
+ Comment[zh_HK]=é™„ćœ‰ DCOP äť‹é˘çš„ć–‡ĺ­—ćœ—čŽ€ĺˇĽĺ
ˇ
++Comment[zh_TW]=DCOP äť‹é˘çš„ć–‡ĺ­—č˝‰čŞžéŸłćœĺ‹™
 Index: kate/plugins/kdatatool/ktexteditor_kdatatool.desktop
 ===================================================================
---- kate/plugins/kdatatool/ktexteditor_kdatatool.desktop	(.../tags/KDE/3.5.2/kdelibs)	(revision 526003)
-+++ kate/plugins/kdatatool/ktexteditor_kdatatool.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 526003)
-@@ -83,7 +83,7 @@
- Comment[cy]=Alluogi offer data fel theawrws a cywirydd sillafu (os maent wedi'u gosod)
- Comment[da]=AktivÊr datavÌrktøjer som begrebsordbog og stavekontrol (hvis installeret)
- Comment[de]=Aktivierung von Dienstprogrammen wie Thesaurus und RechtschreibprĂźfung (falls installiert)
--Comment[el]=Î•Î˝ÎľĎÎłÎżĎ€ÎżÎŻÎˇĎƒÎˇ ξργιΝξΚών δξδοΟένων ĎŒĎ€Ď‰Ď‚ Îż Î¸ÎˇĎƒÎąĎ
ĎĎŒĎ‚ ΝέΞξων κιΚ Îż ÎżĎÎ¸ÎżÎłĎÎąĎ†ÎšÎşĎŒĎ‚ έΝξγχος (ξΏν ξίνιΚ ÎľÎłÎşÎąĎ„ÎľĎƒĎ„ÎˇÎźÎ­Î˝Îą)
-+Comment[el]=Î•Î˝ÎľĎÎłÎżĎ€ÎżÎŻÎˇĎƒÎˇ ξργιΝξΚών δξδοΟένων ĎŒĎ€Ď‰Ď‚ Îż Î¸ÎˇĎƒÎąĎ
ĎĎŒĎ‚ ΝέΞξων κιΚ Îż ÎżĎÎ¸ÎżÎłĎÎąĎ†ÎšÎşĎŒĎ‚ έΝξγχος (ιν ξίνιΚ ÎľÎłÎşÎąĎ„ÎľĎƒĎ„ÎˇÎźÎ­Î˝Îą)
- Comment[eo]=Enŝaltu datumiloj kiel "thesaurus" kaj literumado (se instalita)
- Comment[es]=Activa herramientas como el thesaurus y el corrector ortogrĂĄfico (si instalados)
- Comment[et]=Andmete tÜÜriistad, näiteks thesaurus ja þigekirja kontroll
+--- kate/plugins/kdatatool/ktexteditor_kdatatool.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/plugins/kdatatool/ktexteditor_kdatatool.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -102,7 +102,7 @@
+ Comment[hu]=AdatkezelÊsi eszkÜzÜk (pl. szinonimaszótår, helyesírås-ellenőrző) tåmogatåsa
+ Comment[is]=Virkir gagnatĂłl eins og stafsetningaforrit og leiĂ°rĂŠttingar (ef uppsett)
+ Comment[it]=Abilita gli strumenti per i dati come il dizionario dei sinonimi e il controllo ortografico (se installati)
+-Comment[ja]=ĺŒçžŠčŞžăƒ„ăƒźăƒŤă‚„ă‚šăƒšăƒŤăƒă‚§ăƒƒă‚ŻăŞăŠăŽăƒ‡ăƒźă‚żăƒ„ăƒźăƒŤă‚’ćœ‰ĺŠšăŤă—ăžă™ ďźˆă‚¤ăƒłă‚šăƒˆăƒźăƒŤă•ă‚ŒăŚă„ă‚‹ĺ ´ĺˆďź‰
++Comment[ja]=ĺŒçžŠčŞžăƒ„ăƒźăƒŤă‚„ă‚šăƒšăƒŤăƒă‚§ăƒƒă‚ŻăŞăŠăŽăƒ‡ăƒźă‚żăƒ„ăƒźăƒŤă‚’ćœ‰ĺŠšăŤă—ăžă™ (ă‚¤ăƒłă‚šăƒˆăƒźăƒŤă•ă‚ŒăŚă„ă‚‹ĺ ´ĺˆ)
+ Comment[km]=áž’áŸ’ážœážžâ€‹áž˛áŸ’áž™â€‹áž§áž”áž€ážšážŽáŸâ€‹áž‘ážˇáž“áŸ’áž“áž“áŸáž™â€‹áž”áŸ’ážšážžâ€‹áž”ážśáž“ ដសáž
â€‹áž‡ážśâ€‹áž€áž˜áŸ’ážšáž„â€‹ážœáŸážœáž
នសព្ទ áž“ážˇáž„â€‹áž–ážˇáž“ážˇážáŸ’áž™â€‹áž˘áž€áŸ’ážážšážśážœážˇážšážťáž‘áŸ’áž’â€‹áž‡ážśâ€‹ážŠážžáž˜ (áž”ážžâ€‹áž”ážśáž“â€‹ážŠáŸ†ážĄážžáž„)
+ Comment[ko]=(Ꚕ려 ěžˆë‹¤ëŠ´) ëš„ěŠˇí•œ 말 ě‚Źě „ęłź 맞윤법 검삏기 ę°™ě€ ë„ęľŹëĽź ě”ë‹ˆë‹¤
+ Comment[lb]=HĂŤllefsprogrammer, wĂŠi ThĂŠsaurus an Rechtschreifkontroll, uschalten (wann installĂŠiert)
 Index: kate/plugins/insertfile/ktexteditor_insertfile.desktop
 ===================================================================
---- kate/plugins/insertfile/ktexteditor_insertfile.desktop	(.../tags/KDE/3.5.2/kdelibs)	(revision 526003)
-+++ kate/plugins/insertfile/ktexteditor_insertfile.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 526003)
-@@ -20,7 +20,7 @@
- Name[fa]=Ů
ŘŞŘľŮ„â€ŒÚŠŮ†Ů†ŘŻŮ‡â€ŒŰŒ ŮžŘąŮˆŮ†ŘŻŮ‡â€ŒŰŒ ŮˆŘąŮˆŘŻ KTextEditor
- Name[fi]=KTextEditorin 'Lisää tiedosto'-laajennus
- Name[fr]=Module externe du fichier d'insertion de KTextEditor
--Name[fy]=KTextEditor-plugin foar it ynfoegjen fan triemen
-+Name[fy]=KTextEditor-plugin foar it ynfoegjen fan triemmen
- Name[ga]=BreiseĂĄn KTextEditor chun comhad a ionsĂĄ
- Name[gl]=Plugin de InserzĂłn de Arquivo de KTextEditor
- Name[he]=תוץף הוץפת קוב׼ ל֞KTextEditor
-Index: kate/part/katedocument.cpp
-===================================================================
---- kate/part/katedocument.cpp	(.../tags/KDE/3.5.2/kdelibs)	(revision 526003)
-+++ kate/part/katedocument.cpp	(.../branches/KDE/3.5/kdelibs)	(revision 526003)
-@@ -699,6 +699,10 @@
- 
-   bool replacetabs = ( config()->configFlags() & KateDocumentConfig::cfReplaceTabsDyn && ! m_isInUndo );
-   uint tw = config()->tabWidth();
-+  uint insertPosExpanded = insertPos;
-+  KateTextLine::Ptr l = m_buffer->line( line );
-+  if (l != 0)
-+    insertPosExpanded = l->cursorX( insertPos, tw );
+--- kate/plugins/insertfile/ktexteditor_insertfile.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/plugins/insertfile/ktexteditor_insertfile.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -131,6 +131,7 @@
+ Comment[vi]=Chèn bẼt káťł táş­p tin cĂł khả năng Ä‘áťc tấi váť‹ trĂ­ cᝧa con chấy.
+ Comment[zh_CN]=ĺœ¨ĺ
‰ć ‡ä˝ç˝Žć’ĺ
Ľäťťä˝•ĺŻčŻťć–‡äťś
+ Comment[zh_HK]=ĺœ¨ć¸¸ć¨™č™•ć’ĺ
Ľäťťć„çš„ćŞ”ćĄˆ
++Comment[zh_TW]=ĺœ¨ć¸¸ć¨™č™•ć’ĺ
Ľäťťć„çš„ĺŻčŽ€ćŞ”ćĄˆ
+ X-KDE-Library=ktexteditor_insertfile
+ ServiceTypes=KTextEditor/Plugin
+ Type=Service
+Index: kate/plugins/autobookmarker/ktexteditor_autobookmarker.desktop
+===================================================================
+--- kate/plugins/autobookmarker/ktexteditor_autobookmarker.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/plugins/autobookmarker/ktexteditor_autobookmarker.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -110,6 +110,7 @@
+ Comment[uk]=ВстанОвНює СакНадки на Ń€ŃĐ´ĐşĐ°Ń
, щО Đ˛Ń–Đ´ĐżĐžĐ˛Ń–Đ´Đ°ŃŽŃ‚ŃŒ вСірцю, під час ĐˇĐ°Đ˛Đ°Đ˝Ń‚Đ°ĐśĐľĐ˝Đ˝Ń Đ´ĐžĐşŃƒĐźĐľĐ˝Ń‚Ń–Đ˛
+ Comment[vi]=Đạt đånh dẼu trên cåc dòng kh᝛p m᝙t mẍu nào đó khi tải tài liᝇu.
+ Comment[zh_CN]=文楣čŁ
ĺ
Ľć—ść šćŽĺŒšé
ć¨Ąĺźč‡ŞĺŠ¨čŽžç˝ŽäšŚç­ž
++Comment[zh_TW]=文䝜蟉ĺ
Ľć™‚äťĽĺ­—ä¸˛ćŻ”ĺ°ćź”çŽ—ćł•äž†č¨­ĺŽšć›¸çą¤ă€‚
+ X-KDE-Library=ktexteditor_autobookmarker
+ ServiceTypes=KTextEditor/Plugin
+ Type=Service
+Index: kate/plugins/wordcompletion/ktexteditor_docwordcompletion.desktop
+===================================================================
+--- kate/plugins/wordcompletion/ktexteditor_docwordcompletion.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/plugins/wordcompletion/ktexteditor_docwordcompletion.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -57,6 +57,7 @@
+ Name[vi]=B᝙ cầm phít Nhập xong Tᝍ KTextEditor
+ Name[zh_CN]=KTextEditor ĺ•čŻčĄĽĺ
¨ć’äťś
+ Name[zh_HK]=KTextEditor ć–‡ĺ­—č‡Şĺ‹•čŁœé˝Šĺ¤–ćŽ›ç¨‹ĺź
++Name[zh_TW]=KTextEditor ĺ–Žĺ­—čŁœĺŽŒĺ¤–ćŽ›ç¨‹ĺź
+ Comment=Directional or popup-based completion from words in the document
+ Comment[af]=Direksionele of opspring gebaseerde woord voltooiĂŻng van woorde in die dokument
+ Comment[bg]=АвтОПатичнО ĐˇĐ°Đ˛ŃŠŃ€ŃˆĐ˛Đ°Đ˝Đľ на Đ´ŃƒĐźĐ¸, йаСиранО на иСпОНСванито вочо Đ´ŃƒĐźĐ¸ в Đ´ĐžĐşŃƒĐźĐľĐ˝Ń‚Đ°
+@@ -111,6 +112,7 @@
+ Comment[uk]=Đ—Đ°Đ˛ĐľŃ€ŃˆĐľĐ˝Đ˝Ń сНів Ńƒ Đ´ĐžĐşŃƒĐźĐľĐ˝Ń‚Ń–. ĐŸŃ€ŃĐźĐľ айО на ОснОві Đ˛Đ¸ĐłŃƒĐťŃŒĐşĐ˝ĐžĐłĐž Поню
+ Comment[vi]=Khả năng nháş­p xong tᝍ trong tĂ i liᝇu, Ä‘áťąa vĂ o chiᝁu hoạc vĂ o báť™ báş­t lĂŞn.
+ Comment[zh_CN]=ĺœ¨ć–‡ćĄŁä¸­ĺŸşäşŽć–šĺ‘ćˆ–ĺźšĺ‡şčĄĽĺ
¨ĺ•čŻ
++Comment[zh_TW]=ĺœ¨çˇ¨čźŻć–‡äťść™‚çš„ĺ–Žĺ­—čŁœĺŽŒĺŠŸčƒ˝
+ X-KDE-Library=ktexteditor_docwordcompletion
+ ServiceTypes=KTextEditor/Plugin
+ Type=Service
+Index: kate/plugins/isearch/ktexteditor_isearch.desktop
+===================================================================
+--- kate/plugins/isearch/ktexteditor_isearch.desktop	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/plugins/isearch/ktexteditor_isearch.desktop	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -128,6 +128,7 @@
+ Comment[uk]=ТакОМ відОПиК як "ĐŸĐžŃˆŃƒĐş Са ввОдОП"
+ Comment[vi]=CŊng đưᝣc biết như là  TÏm kiếm trong khi gþ .
+ Comment[zh_CN]=äšŸç§°ä¸şâ€œĺłčž“ĺłćœâ€
++Comment[zh_TW]=äšŸç¨ąĺšă€Œĺłć™‚ćœĺ°‹ă€
+ X-KDE-Library=ktexteditor_isearch
+ ServiceTypes=KTextEditor/Plugin
+ Type=Service
+Index: kate/part/katerenderer.cpp
+===================================================================
+--- kate/part/katerenderer.cpp	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/part/katerenderer.cpp	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -34,9 +34,6 @@
+ #include <qpainter.h>
+ #include <qpopupmenu.h>
+ 
+-static const QChar tabChar('\t');
+-static const QChar spaceChar(' ');
+-
+ KateRenderer::KateRenderer(KateDocument* doc, KateView *view)
+   : m_doc(doc), m_view (view), m_caretStyle(KateRenderer::Insert)
+     , m_drawCaret(true)
+@@ -376,7 +373,7 @@
+     if (showCursor && (cursor->col() >= int(startcol)))
+     {
+       cursorVisible = true;
+-      cursorXPos = xPos + cursor->col() * fs->myFontMetrics.width(spaceChar);
++      cursorXPos = xPos + cursor->col() * fs->myFontMetrics.width(QChar(' '));
+     }
+   }
+   else
+@@ -417,7 +414,7 @@
+     const uint lastIndentColumn = textLine->firstChar();
+ 
+     // Could be precomputed.
+-    const uint spaceWidth = fs->width (spaceChar, false, false, m_tabWidth);
++    const uint spaceWidth = fs->width (QChar(' '), false, false, m_tabWidth);
+ 
+     // Get current x position.
+     int curPos = textLine->cursorX(curCol, m_tabWidth);
+@@ -425,12 +422,13 @@
+     while (curCol - startcol < len)
+     {
+       // make sure curPos is updated correctly.
+-      Q_ASSERT(curPos == textLine->cursorX(curCol, m_tabWidth));
++      // ### if uncommented, causes an O(n^2) behaviour
++      //Q_ASSERT(curPos == textLine->cursorX(curCol, m_tabWidth));
+ 
+       QChar curChar = textLine->string()[curCol];
+       // Decide if this character is a tab - we treat the spacing differently
+       // TODO: move tab width calculation elsewhere?
+-      bool isTab = curChar == tabChar;
++      bool isTab = curChar == QChar('\t');
+ 
+       // Determine current syntax highlighting attribute
+       // A bit legacy but doesn't need to change
+@@ -497,7 +495,7 @@
+           || (superRanges.count() && superRanges.currentBoundary() && *(superRanges.currentBoundary()) == KateTextCursor(line, nextCol))
+ 
+           // it is the end of the line OR
+-          || (curCol >= len - 1)
++          || (curCol - startcol >= len - 1)
+ 
+           // the rest of the line is trailing whitespace OR
+           || (curCol + 1 >= trailingWhitespaceColumn)
+@@ -516,7 +514,7 @@
+ 
+           // the next char is a tab (removed the "and this isn't" because that's dealt with above)
+           // i.e. we have to draw the current text so the tab can be rendered as above.
+-          || (textLine->string()[nextCol] == tabChar)
++          || (textLine->string()[nextCol] == QChar('\t'))
+ 
+           // input method edit area
+           || ( m_view && (isIMEdit != m_view->isIMEdit( line, nextCol )) )
+@@ -698,11 +696,18 @@
+       }
+     }
+ 
++    // If this line has a partial selection that's the start of a multi-line selection,
++    // we have to fill areas on the right side of the text with the selection color.
++    if (showSelections() && hasSel && !selectionPainted && xStart >= (int)xPos && m_view->lineEndSelected(line, -1))
++    {
++      paint.fillRect(0, 0, xEnd-xStart, fs->fontHeight, config()->selectionColor());
++    }
++
+     // Determine cursor position (if it is not within the range being drawn)
+     if (showCursor && (cursor->col() >= int(curCol)))
+     {
+       cursorVisible = true;
+-      cursorXPos = xPos + (cursor->col() - int(curCol)) * fs->myFontMetrics.width(spaceChar);
++      cursorXPos = xPos + (cursor->col() - int(curCol)) * fs->myFontMetrics.width(QChar(' '));
+       cursorMaxWidth = xPosAfter - xPos;
+       cursorColor = &oldAt->textColor();
+     }
+@@ -733,29 +738,32 @@
+   if (!textLine)
+     return 0;
+ 
+-  int len = textLine->length();
++  const int len = textLine->length();
+ 
+-  if (cursorCol < 0)
++  if (cursorCol < 0 || cursorCol > len)
+     cursorCol = len;
+ 
+   KateFontStruct *fs = config()->fontStruct();
+ 
++  const QChar *unicode = textLine->text();
++  const QString &textString = textLine->string();
++
+   int x = 0;
+   int width;
+   for (int z = 0; z < cursorCol; z++) {
+     KateAttribute* a = attribute(textLine->attribute(z));
+ 
+     if (z < len) {
+-      width = a->width(*fs, textLine->string(), z, m_tabWidth);
++      width = a->width(*fs, textString, z, m_tabWidth);
+     } else {
+       // DF: commented out. It happens all the time.
+       //Q_ASSERT(!m_doc->wrapCursor());
+-      width = a->width(*fs, spaceChar, m_tabWidth);
++      width = a->width(*fs, QChar(' '), m_tabWidth);
+     }
+ 
+     x += width;
+ 
+-    if (textLine->getChar(z) == tabChar)
++    if (unicode[z] == QChar('\t'))
+       x -= x % width;
+   }
+ 
+@@ -778,15 +786,19 @@
  
-   for (uint pos = 0; pos < len; pos++)
+   *needWrap = false;
+ 
++  const uint len = textLine->length();
++  const QChar *unicode = textLine->text();
++  const QString &textString = textLine->string();
++
+   uint z = startcol;
+-  for (; z < textLine->length(); z++)
++  for (; z < len; z++)
    {
-@@ -706,28 +710,30 @@
+     KateAttribute* a = attribute(textLine->attribute(z));
+-    int width = a->width(*fs, textLine->string(), z, m_tabWidth);
++    int width = a->width(*fs, textString, z, m_tabWidth);
+     Q_ASSERT(width);
+     x += width;
  
-     if (ch == '\n')
+-    if (textLine->getChar(z).isSpace())
++    if (unicode[z].isSpace())
      {
-+      editInsertText (line, insertPos, buf);
+       lastWhiteSpace = z+1;
+       lastWhiteSpaceX = x;
+@@ -806,7 +818,7 @@
+ 
+     // How should tabs be treated when they word-wrap on a print-out?
+     // if startcol != 0, this messes up (then again, word wrapping messes up anyway)
+-    if (textLine->getChar(z) == tabChar)
++    if (unicode[z] == QChar('\t'))
+       x -= x % width;
+ 
+     if (x <= maxwidth)
+@@ -864,7 +876,6 @@
+ uint KateRenderer::textWidth( KateTextCursor &cursor, int xPos, uint startCol)
+ {
+   bool wrapCursor = m_view->wrapCursor();
+-  int len;
+   int x, oldX;
+ 
+   KateFontStruct *fs = config()->fontStruct();
+@@ -875,10 +886,12 @@
+ 
+   if (!textLine) return 0;
+ 
+-  len = textLine->length();
++  const uint len = textLine->length();
++  const QChar *unicode = textLine->text();
++  const QString &textString = textLine->string();
+ 
+   x = oldX = 0;
+-  int z = startCol;
++  uint z = startCol;
+   while (x < xPos && (!wrapCursor || z < len)) {
+     oldX = x;
+ 
+@@ -887,13 +900,13 @@
+     int width = 0;
+ 
+     if (z < len)
+-      width = a->width(*fs, textLine->string(), z, m_tabWidth);
++      width = a->width(*fs, textString, z, m_tabWidth);
+     else
+-      width = a->width(*fs, spaceChar, m_tabWidth);
++      width = a->width(*fs, QChar(' '), m_tabWidth);
+ 
+     x += width;
+ 
+-    if (textLine->getChar(z) == tabChar)
++    if (z < len && unicode[z] == QChar('\t'))
+       x -= x % width;
+ 
+     z++;
+@@ -933,12 +946,14 @@
+   x = oldX = 0;
+ 
+   uint z = startCol;
+-  uint len= textLine->length();
++  const uint len = textLine->length();
++  const QString &textString = textLine->string();
 +
-       if ( !blockwise )
-       {
--        editInsertText (line, insertPos, buf);
-         editWrapLine (line, insertPos + buf.length());
-+        insertPos = insertPosExpanded = 0;
-       }
+   while ( (x < xPos)  && (z < len)) {
+     oldX = x;
+ 
+     KateAttribute* a = attribute(textLine->attribute(z));
+-    x += a->width(*fs, textLine->string(), z, m_tabWidth);
++    x += a->width(*fs, textString, z, m_tabWidth);
+ 
+     z++;
+   }
+@@ -1011,7 +1026,7 @@
+ 
+ uint KateRenderer::spaceWidth()
+ {
+-  return attribute(0)->width(*config()->fontStruct(), spaceChar, m_tabWidth);
++  return attribute(0)->width(*config()->fontStruct(), QChar(' '), m_tabWidth);
+ }
+ 
+ // kate: space-indent on; indent-width 2; replace-tabs on;
+Index: kate/part/katehighlight.cpp
+===================================================================
+--- kate/part/katehighlight.cpp	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/part/katehighlight.cpp	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -1522,7 +1522,7 @@
+         // even set attributes ;)
+         memset ( textLine->attributes()+offset
+                , item->onlyConsume ? context->attr : item->attr
+-               , len-offset);
++               , offset2-offset);
+ 
+         offset = offset2;
+         lastChar = text[offset-1];
+@@ -2080,8 +2080,8 @@
+ 
+ bool KateHighlighting::isInWord( QChar c, int attrib ) const
+ {
+-  static const QString& sq = KGlobal::staticQString(" \"'");
+-  return m_additionalData[ hlKeyForAttrib( attrib ) ]->deliminator.find(c) < 0 && sq.find(c) < 0;
++  return m_additionalData[ hlKeyForAttrib( attrib ) ]->deliminator.find(c) < 0
++      && !c.isSpace() && c != '"' && c != '\'';
+ }
+ 
+ bool KateHighlighting::canBreakAt( QChar c, int attrib ) const
+Index: kate/part/kateviewinternal.h
+===================================================================
+--- kate/part/kateviewinternal.h	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/part/kateviewinternal.h	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -190,7 +190,6 @@
+ 
+   private:
+     void moveChar( Bias bias, bool sel );
+-    void moveWord( Bias bias, bool sel );
+     void moveEdge( Bias bias, bool sel );
+     KateTextCursor maxStartPos(bool changed = false);
+     void scrollPos(KateTextCursor& c, bool force = false, bool calledExternally = false);
+@@ -269,7 +268,6 @@
+     //
+     QScrollBar *m_columnScroll;
+     int m_startX;
+-    int m_oldStartX;
+ 
+     // has selection changed while your mouse or shift key is pressed
+     bool m_selChangedByUser;
+@@ -363,10 +361,6 @@
+     static const int scrollTime = 30;
+     static const int scrollMargin = 16;
+ 
+-    // dyn wrap mode:
+-    // used to set the lineScroll to the max value
+-    bool m_maximizeLineScroll;
+-
+   private slots:
+     void scrollTimeout ();
+     void cursorTimeout ();
+Index: kate/part/katetextline.cpp
+===================================================================
+--- kate/part/katetextline.cpp	(.../tags/KDE/3.5.3/kdelibs)	(revision 556696)
++++ kate/part/katetextline.cpp	(.../branches/KDE/3.5/kdelibs)	(revision 556696)
+@@ -109,9 +109,12 @@
+ 
+ int KateTextLine::nextNonSpaceChar(uint pos) const
+ {
+-  for(int i = pos; i < (int)m_text.length(); i++)
++  const uint len = m_text.length();
++  const QChar *unicode = m_text.unicode();
++
++  for(uint i = pos; i < len; i++)
+   {
+-    if(!m_text[i].isSpace())
++    if(!unicode[i].isSpace())
+       return i;
+   }
+ 
+@@ -120,12 +123,16 @@
+ 
+ int KateTextLine::previousNonSpaceChar(uint pos) const
+ {
+-  if (pos >= m_text.length())
+-    pos = m_text.length() - 1;
++  const int len = m_text.length();
+ 
++  if (pos >= (uint)len)
++    pos = len - 1;
++
++  const QChar *unicode = m_text.unicode();
++
+   for(int i = pos; i >= 0; i--)
+   {
+-    if(!m_text[i].isSpace())
++    if(!unicode[i].isSpace())
+       return i;
+   }
+ 
+@@ -151,12 +158,14 @@
+ uint KateTextLine::indentDepth (uint tabwidth) const
+ {
+   uint d = 0;
++  const uint len = m_text.length();
++  const QChar *unicode = m_text.unicode();
+ 
+-  for(uint i = 0; i < m_text.length(); i++)
++  for(uint i = 0; i < len; i++)
+   {
+-    if(m_text[i].isSpace())
++    if(unicode[i].isSpace())
+     {
+-      if (m_text[i] == QChar('\t'))
++      if (unicode[i] == QChar('\t'))
+         d += tabwidth - (d % tabwidth);
        else
-       {
--        editInsertText (line, col, buf);
+         d++;
+@@ -170,11 +179,21 @@
+ 
+ bool KateTextLine::stringAtPos(uint pos, const QString& match) const
+ {
+-  if ((pos+match.length()) > m_text.length())
++  const uint len = m_text.length();
++  const uint matchlen = match.length();
++
++  if ((pos+matchlen) > len)
+     return false;
+ 
+-  for (uint i=0; i < match.length(); i++)
+-    if (m_text[i+pos] != match[i])
++  // (pos > len) in case the uint pos was assigned a signed -1, pos+matchlen can
++  // overflow again which (pos+matchlen > len) does not catch; see bugs #129263 and #129580
++  Q_ASSERT(pos < len);
++
++  const QChar *unicode = m_text.unicode();
++  const QChar *matchUnicode = match.unicode();
++
++  for (uint i=0; i < matchlen; i++)
++    if (unicode[i+pos] != matchUnicode[i])
+       return false;
+ 
+   return true;
+@@ -182,11 +201,16 @@
+ 
+ bool KateTextLine::startingWith(const QString& match) const
+ {
+-  if (match.length() > m_text.length())
++  const uint matchlen = match.length();
++
++  if (matchlen > m_text.length())
+     return false;
+ 
+-  for (uint i=0; i < match.length(); i++)
+-    if (m_text[i] != match[i])
++  const QChar *unicode = m_text.unicode();
++  const QChar *matchUnicode = match.unicode();
++
++  for (uint i=0; i < matchlen; i++)
++    if (unicode[i] != matchUnicode[i])
+       return false;
+ 
+   return true;
+@@ -194,12 +218,17 @@
+ 
+ bool KateTextLine::endingWith(const QString& match) const
+ {
+-  if (match.length() > m_text.length())
++  const uint matchlen = match.length();
++
++  if (matchlen > m_text.length())
+     return false;
+ 
+-  uint start = m_text.length() - match.length();
+-  for (uint i=0; i < match.length(); i++)
+-    if (m_text[start+i] != match[i])
++  const QChar *unicode = m_text.unicode();
++  const QChar *matchUnicode = match.unicode();
++
++  uint start = m_text.length() - matchlen;
++  for (uint i=0; i < matchlen; i++)
++    if (unicode[start+i] != matchUnicode[i])
+       return false;
+ 
+   return true;
+@@ -209,9 +238,12 @@
+ {
+   uint x = 0;
+ 
+-  for ( uint z = 0; z < kMin (pos, m_text.length()); z++)
++  const uint n = kMin (pos, m_text.length());
++  const QChar *unicode = m_text.unicode();
++
++  for ( uint z = 0; z < n; z++)
+   {
+-    if (m_text[z] == QChar('\t'))
++    if (unicode[z] == QChar('\t'))
+       x += tabChars - (x % tabChars);
+     else
+       x++;
+@@ -224,10 +256,12 @@
+ uint KateTextLine::lengthWithTabs (uint tabChars) const
+ {
+   uint x = 0;
++  const uint len = m_text.length();
++  const QChar *unicode = m_text.unicode();
+ 
+-  for ( uint z = 0; z < m_text.length(); z++)
++  for ( uint z = 0; z < len; z++)
+   {
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/kdelibs-branch.diff?r1=1.26&r2=1.27&f=u



More information about the pld-cvs-commit mailing list