[Ttssh2-commit] [3656] クリッカブルURLの色描画が、間欠で誤って、行末までペイントされてしまう問題へ対処した。

svnno****@sourc***** svnno****@sourc*****
2009年 10月 24日 (土) 17:33:15 JST


Revision: 3656
          http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=3656
Author:   yutakapon
Date:     2009-10-24 17:33:15 +0900 (Sat, 24 Oct 2009)

Log Message:
-----------
クリッカブルURLの色描画が、間欠で誤って、行末までペイントされてしまう問題へ対処した。

Modified Paths:
--------------
    trunk/teraterm/teraterm/buffer.c


-------------- next part --------------
Modified: trunk/teraterm/teraterm/buffer.c
===================================================================
--- trunk/teraterm/teraterm/buffer.c	2009-10-20 14:24:48 UTC (rev 3655)
+++ trunk/teraterm/teraterm/buffer.c	2009-10-24 08:33:15 UTC (rev 3656)
@@ -1708,6 +1708,7 @@
 {
 	int X, Y;
 	TCharAttr TempAttr;
+	int pos, len;
 
 	if (StrChangeCount==0) {
 		return;
@@ -1723,8 +1724,37 @@
 	TempAttr.Attr2 = AttrLine2[StrChangeStart];
 	TempAttr.Fore = AttrLineFG[StrChangeStart];
 	TempAttr.Back = AttrLineBG[StrChangeStart];
-	DispSetupDC(TempAttr, FALSE);
-	DispStr(&CodeLine[StrChangeStart],StrChangeCount,Y, &X);
+
+	/* ‚±‚ê‚©‚ç•`‰æ‚·‚镶Žš—ñ‚ÌŽn‚܂肪uURL\¬•¶Žš‘®«v‚¾‚Á‚½ê‡A
+	 * “–ŠYF‚ōs––‚܂ŃyƒCƒ“ƒg‚³‚ê‚È‚¢‚悤‚É‚·‚éB
+	 * (2009.10.24 yutaka)
+	 */
+	if (TempAttr.Attr == AttrURL) {
+		/* ŠJŽnˆÊ’u‚©‚ç‚Ç‚±‚Ü‚Å‚ª AttrURL ‚©‚ðƒJƒEƒ“ƒg‚·‚é */
+		len = 0;
+		for (pos = 0 ; pos < StrChangeCount ; pos++) {
+			if (TempAttr.Attr != AttrLine[StrChangeStart + pos])
+				break;
+			len++;
+		}
+		DispSetupDC(TempAttr, FALSE);
+		DispStr(&CodeLine[StrChangeStart], len, Y, &X);
+
+		/* Žc‚è‚Ì•¶Žš—ñ‚ª‚ ‚ê‚΁A‚ӂ‚¤‚É•`‰æ‚ðs‚¤B*/
+		if (len < StrChangeCount) {
+			TempAttr.Attr = AttrLine[StrChangeStart + pos];
+			TempAttr.Attr2 = AttrLine2[StrChangeStart + pos];
+			TempAttr.Fore = AttrLineFG[StrChangeStart + pos];
+			TempAttr.Back = AttrLineBG[StrChangeStart + pos];
+
+			DispSetupDC(TempAttr, FALSE);
+			DispStr(&CodeLine[StrChangeStart + pos], (StrChangeCount - len), Y, &X);
+		}
+	} else {
+		DispSetupDC(TempAttr, FALSE);
+		DispStr(&CodeLine[StrChangeStart],StrChangeCount,Y, &X);
+	}
+
 	StrChangeCount = 0;
 }
 



Ttssh2-commit メーリングリストの案内