[Ttssh2-commit] [4696] ・OSC 文字列によるカラーパレット変更が出来なくなっていたのを修正 ( r4644でのエンバグ )

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 11月 1日 (火) 01:40:11 JST


Revision: 4696
          http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4696
Author:   doda
Date:     2011-11-01 01:40:10 +0900 (Tue, 01 Nov 2011)

Log Message:
-----------
・OSC 文字列によるカラーパレット変更が出来なくなっていたのを修正 (r4644でのエンバグ)
・空や対応していない OSC 文字列の後に続く文字列が表示されない場合が有ったのを修正

Modified Paths:
--------------
    trunk/teraterm/teraterm/vtdisp.c
    trunk/teraterm/teraterm/vtterm.c


-------------- next part --------------
Modified: trunk/teraterm/teraterm/vtdisp.c
===================================================================
--- trunk/teraterm/teraterm/vtdisp.c	2011-10-30 13:54:39 UTC (rev 4695)
+++ trunk/teraterm/teraterm/vtdisp.c	2011-10-31 16:40:10 UTC (rev 4696)
@@ -3693,7 +3693,9 @@
 	}
 
 #ifdef ALPHABLEND_TYPE2
-	BGInitialize();
+	if (num > 255) {
+		BGInitialize();
+	}
 #endif
 	if (num == CS_TEK_FG || num == CS_TEK_BG) {
 		if (HTEKWin)

Modified: trunk/teraterm/teraterm/vtterm.c
===================================================================
--- trunk/teraterm/teraterm/vtterm.c	2011-10-30 13:54:39 UTC (rev 4695)
+++ trunk/teraterm/teraterm/vtterm.c	2011-10-31 16:40:10 UTC (rev 4696)
@@ -3444,6 +3444,7 @@
 #define ModeXsColorNum  3
 #define ModeXsColorSpec 4
 #define ModeXsEsc       5
+#define ModeXsIgnore    6
 void XSequence(BYTE b)
 {
 	static BYTE XsParseMode = ModeXsFirst, PrevMode;
@@ -3467,21 +3468,16 @@
 			case 11:
 			case 15:
 			case 16:
+				ColorNumber = 0;
 				XsParseMode = ModeXsColorSpec;
-				ColorNumber = 0;
-				StrBuff[0] = '\0';
-				StrLen = 0;
 				break;
 			default:
 				XsParseMode = ModeXsString;
 			}
 		}
 		else {
-			// Invalid Sequence. Ignore.
-			Param[1] = 0xFFFFFFFF;
-			StrBuff[0] = '\0';
-			StrLen = 0;
-			XsParseMode = ModeXsString;
+			XsParseMode = ModeXsIgnore;
+			XSequence(b);
 		}
 		break;
 	  case ModeXsString:
@@ -3522,14 +3518,10 @@
 		}
 		else if (b == ';') {
 			XsParseMode = ModeXsColorSpec;
-			StrBuff[0] = '\0';
-			StrLen = 0;
 		}
 		else {
-			Param[1] = 0xFFFFFFFF;
-			StrBuff[0] = '\0';
-			StrLen = 0;
-			XsParseMode = ModeXsString;
+			XsParseMode = ModeXsIgnore;
+			XSequence(b);
 		}
 		break;
 	  case ModeXsColorSpec:
@@ -3571,8 +3563,7 @@
 				Param[1]++;
 				break;
 			default:
-				XsParseMode = ModeXsString;
-				Param[1] = 0xFFFFFFFF;
+				XsParseMode = ModeXsIgnore;
 				break;
 			}
 		}
@@ -3593,6 +3584,16 @@
 			EscapeSequence(b);
 		}
 		break;
+	  case ModeXsIgnore:
+		if ((b==ST && Accept8BitCtrl && !(ts.Language==IdJapanese && ts.KanjiCode==IdSJIS)) || b==BEL) { /* String Terminator */
+			ParseMode = ModeFirst;
+			XsParseMode = ModeXsFirst;
+		}
+		else if (b == ESC) {
+			PrevMode = ModeXsIgnore;
+			XsParseMode = ModeXsEsc;
+		}
+	  	break;
 	}
 }
 



Ttssh2-commit メーリングリストの案内
Back to archive index