[Ttssh2-commit] [5419] ウィンドウリサイズ中のツールチップの座標がマイナスのとき、強制的にプライマリモニタに表示される問題を修正

svnno****@sourc***** svnno****@sourc*****
2013年 11月 17日 (日) 22:54:25 JST


Revision: 5419
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5419
Author:   maya
Date:     2013-11-17 22:54:22 +0900 (Sun, 17 Nov 2013)
Log Message:
-----------
ウィンドウリサイズ中のツールチップの座標がマイナスのとき、強制的にプライマリモニタに表示される問題を修正
  マルチモニタ API を利用して有効な座標かチェックする
  無効な座標の場合はマウスのあるモニタに表示する
  http://sourceforge.jp/ticket/browse.php?group_id=1412&tid=32424

Modified Paths:
--------------
    trunk/doc/en/html/about/history.html
    trunk/doc/ja/html/about/history.html
    trunk/teraterm/teraterm/vtwin.cpp

-------------- next part --------------
Modified: trunk/doc/en/html/about/history.html
===================================================================
--- trunk/doc/en/html/about/history.html	2013-11-16 09:03:07 UTC (rev 5418)
+++ trunk/doc/en/html/about/history.html	2013-11-17 13:54:22 UTC (rev 5419)
@@ -55,6 +55,7 @@
     <ul>
       <li>When the log file is opened, the "Hide dialog" function does not work well.</li>
       <li>Tera Term(ttermpro.exe) can not run on Windows 95/NT4.0.</li>
+      <!--li>\x83}\x83\x8B\x83`\x83\x82\x83j\x83^\x8A‹\xAB\x82ɂ\xA8\x82\xA2\x82āA\x83E\x83B\x83\x93\x83h\x83E\x82̃\x8A\x83T\x83C\x83Y\x92\x86\x82ɕ\\x8E\xA6\x82\xB3\x82\xEA\x82\xE9\x83c\x81[\x83\x8B\x83`\x83b\x83v\x82̈ʒu\x82\xAA\x97L\x8C\xF8\x82ȃ}\x83C\x83i\x83X\x8D\xC0\x95W\x82̏ꍇ\x82ł\xE0\x83v\x83\x89\x83C\x83}\x83\x8A\x83\x82\x83j\x83^\x82ɕ\\x8E\xA6\x82\xB3\x82\xEA\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li-->
     </ul>
   </li>
 

Modified: trunk/doc/ja/html/about/history.html
===================================================================
--- trunk/doc/ja/html/about/history.html	2013-11-16 09:03:07 UTC (rev 5418)
+++ trunk/doc/ja/html/about/history.html	2013-11-17 13:54:22 UTC (rev 5419)
@@ -55,6 +55,7 @@
     <ul>
       <li>\x83\x8D\x83O\x8E擾\x8E\x9E\x82\xC9 "\x83_\x83C\x83A\x83\x8D\x83O\x82\xF0\x94\xF1\x95\\x8E\xA6" \x83I\x83v\x83V\x83\x87\x83\x93\x82\xAA\x90\xB3\x82\xB5\x82\xAD\x93\xAD\x82\xA9\x82Ȃ\xA2\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
       <li>Windows 95/NT4.0\x82ŋN\x93\xAE\x82ł\xAB\x82Ȃ\xAD\x82Ȃ\xC1\x82Ă\xA2\x82\xBD\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
+      <li>\x83}\x83\x8B\x83`\x83\x82\x83j\x83^\x8A‹\xAB\x82ɂ\xA8\x82\xA2\x82āA\x83E\x83B\x83\x93\x83h\x83E\x82̃\x8A\x83T\x83C\x83Y\x92\x86\x82ɕ\\x8E\xA6\x82\xB3\x82\xEA\x82\xE9\x83c\x81[\x83\x8B\x83`\x83b\x83v\x82̈ʒu\x82\xAA\x97L\x8C\xF8\x82ȃ}\x83C\x83i\x83X\x8D\xC0\x95W\x82̏ꍇ\x82ł\xE0\x83v\x83\x89\x83C\x83}\x83\x8A\x83\x82\x83j\x83^\x82ɕ\\x8E\xA6\x82\xB3\x82\xEA\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
     </ul>
   </li>
 

Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp	2013-11-16 09:03:07 UTC (rev 5418)
+++ trunk/teraterm/teraterm/vtwin.cpp	2013-11-17 13:54:22 UTC (rev 5419)
@@ -2545,6 +2545,8 @@
 		SIZE sz;
 		RECT wr;
 		int ix, iy;
+		HMODULE mod;
+		HMONITOR hm;
 
 		/* calculate the tip's size */
 
@@ -2555,14 +2557,44 @@
 		GetWindowRect(src, &wr);
 
 		ix = wr.left;
-		if (ix < 16) {
-			ix = 16;
-		}
+		iy = wr.top - sz.cy;
 
-		iy = wr.top - sz.cy;
-		if (iy < 16) {
-			iy = 16;
+		if (((mod = GetModuleHandle("user32.dll")) != NULL) &&
+		    (GetProcAddress(mod,"MonitorFromPoint") != NULL)) {
+			// \x83}\x83\x8B\x83`\x83\x82\x83j\x83^\x82\xAA\x83T\x83|\x81[\x83g\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x8Fꍇ
+			POINT p;
+			p.x = ix;
+			p.y = iy;
+			hm = MonitorFromPoint(p, MONITOR_DEFAULTTONULL);
+			if (hm == NULL) {
+#if 1
+				// \x83c\x81[\x83\x8B\x83`\x83b\x83v\x82\xAA\x83X\x83N\x83\x8A\x81[\x83\x93\x82\xA9\x82\xE7\x82͂ݏo\x82\xB5\x82Ă\xA2\x82\xE9\x8Fꍇ\x82̓}\x83E\x83X\x82̂\xA0\x82郂\x83j\x83^\x82ɕ\\x8E\xA6\x82\xB7\x82\xE9
+				GetCursorPos(&p);
+				hm = MonitorFromPoint(p, MONITOR_DEFAULTTONEAREST);
+#else
+				// \x83c\x81[\x83\x8B\x83`\x83b\x83v\x82\xAA\x83X\x83N\x83\x8A\x81[\x83\x93\x82\xA9\x82\xE7\x82͂ݏo\x82\xB5\x82Ă\xA2\x82\xE9\x8Fꍇ\x82͍ł\xE0\x8B߂\xA2\x83\x82\x83j\x83^\x82ɕ\\x8E\xA6\x82\xB7\x82\xE9
+				hm = MonitorFromPoint(p, MONITOR_DEFAULTTONEAREST);
+#endif
+			}
+			MONITORINFO mi;
+			mi.cbSize = sizeof(MONITORINFO);
+			GetMonitorInfo(hm, &mi);
+			if (ix < mi.rcMonitor.left + 16) {
+				ix = mi.rcMonitor.left + 16;
+			}
+			if (iy < mi.rcMonitor.top + 16) {
+				iy = mi.rcMonitor.top + 16;
+			}
 		}
+		else {
+			// \x83}\x83\x8B\x83`\x83\x82\x83j\x83^\x82\xAA\x83T\x83|\x81[\x83g\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2\x8Fꍇ
+			if (ix < 16) {
+				ix = 16;
+			}
+			if (iy < 16) {
+				iy = 16;
+			}
+		}
 
 		/* Create the tip window */
 



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