[Ttssh2-commit] [7270] dttermのウィンドウ操作シーケンス(14:ウィンドウサイズ報告)の動作を更新

scmno****@osdn***** scmno****@osdn*****
2018年 11月 21日 (水) 17:45:22 JST


Revision: 7270
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7270
Author:   doda
Date:     2018-11-21 17:45:21 +0900 (Wed, 21 Nov 2018)
Log Message:
-----------
dttermのウィンドウ操作シーケンス(14:ウィンドウサイズ報告)の動作を更新

- CSI 14 t で送るのをウィンドウのサイズからクライアント領域のサイズに変更
- 二番目のパラメータ(Ps2)の値を見るように変更
  - Ps2 が 0 または 1 の時は Ps2 が無い時の動作に合わせた
  - Ps2 が 2 の時はウィンドウサイズを送るようにした
  - Ps2 がそれ以外の値の時は応答しないようにした

最後の以外は xterm の動作への追従。
xterm では Ps2 が 0 - 2 以外の時はクライアント領域のサイズを送っているが、
Tera Term ではあえて無視する。

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

-------------- next part --------------
Modified: trunk/teraterm/teraterm/vtdisp.c
===================================================================
--- trunk/teraterm/teraterm/vtdisp.c	2018-11-21 08:45:17 UTC (rev 7269)
+++ trunk/teraterm/teraterm/vtdisp.c	2018-11-21 08:45:21 UTC (rev 7270)
@@ -3800,10 +3800,15 @@
 	return;
 }
 
-void DispGetWindowSize(int *width, int *height) {
+void DispGetWindowSize(int *width, int *height, BOOL client) {
 	RECT r;
 
-	GetWindowRect(HVTWin, &r);
+	if (client) {
+		GetClientRect(HVTWin, &r);
+	}
+	else {
+		GetWindowRect(HVTWin, &r);
+	}
 	*width = r.right - r.left;
 	*height = r.bottom - r.top;
 

Modified: trunk/teraterm/teraterm/vtdisp.h
===================================================================
--- trunk/teraterm/teraterm/vtdisp.h	2018-11-21 08:45:17 UTC (rev 7269)
+++ trunk/teraterm/teraterm/vtdisp.h	2018-11-21 08:45:21 UTC (rev 7270)
@@ -112,7 +112,7 @@
 void DispResizeWin(int w, int h);
 BOOL DispWindowIconified();
 void DispGetWindowPos(int *x, int *y);
-void DispGetWindowSize(int *width, int *height);
+void DispGetWindowSize(int *width, int *height, BOOL client);
 void DispGetRootWinSize(int *x, int *y);
 int DispFindClosestColor(int red, int green, int blue);
 void UpdateBGBrush(void);

Modified: trunk/teraterm/teraterm/vtterm.c
===================================================================
--- trunk/teraterm/teraterm/vtterm.c	2018-11-21 08:45:17 UTC (rev 7269)
+++ trunk/teraterm/teraterm/vtterm.c	2018-11-21 08:45:21 UTC (rev 7270)
@@ -2426,7 +2426,19 @@
 
 	  case 14: /* get window size */
 		if (ts.WindowFlag & WF_WINDOWREPORT) {
-			DispGetWindowSize(&x, &y);
+			RequiredParams(2);
+			switch (Param[2]) {
+			  case 0:
+			  case 1:
+				DispGetWindowSize(&x, &y, TRUE);
+				break;
+			  case 2:
+				DispGetWindowSize(&x, &y, FALSE);
+				break;
+			  default:
+				return;
+			}
+
 			len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "4;%d;%dt", CLocale, y, x);
 			SendCSIstr(Report, len);
 		}


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