• R/O
  • SSH
  • HTTPS

ttssh2: コミット


コミットメタ情報

リビジョン7080 (tree)
日時2018-03-29 23:58:00
作者doda

ログメッセージ

ウィンドウリサイズ時の挙動を改善 #38065

ウィンドウのサイズ変更時、クライアント領域の大きさがフォントサイズの
整数倍になるように調整しなおされる。この時、例えばウィンドウの左上を
ドラッグしていた場合、左上を基準にリサイズする為、ウィンドウの右や下
が調整された結果動いてしまう。

ウィンドウの反対の端が動かないようにするため、ドラッグした辺によって
反対の端を基準にしてウィンドウ位置を調節するようにした。

変更サマリ

差分

--- trunk/teraterm/teraterm/vtwin.cpp (revision 7079)
+++ trunk/teraterm/teraterm/vtwin.cpp (revision 7080)
@@ -2905,29 +2905,60 @@
29052905 #endif
29062906 }
29072907
2908-// 「ドラッグ中にウィンドウの内容を表示する」にチェックが入っている場合、
2909-// リサイズ中は常に"WM_SIZING"が飛んでくるため、リサイズツールチップを
2910-// 再描画する。
2911-// (2008.8.1 yutaka)
2908+// リサイズ中の処理として、以下の二つを行う。
2909+// ・ツールチップで新しい端末サイズを表示する
2910+// ・フォントサイズと端末サイズに合わせて、ウィンドウ位置・サイズを調整する
29122911 void CVTWindow::OnSizing(UINT fwSide, LPRECT pRect)
29132912 {
29142913 int nWidth;
29152914 int nHeight;
29162915 RECT cr, wr;
2917- int extra_width, extra_height;
2916+ int margin_width, margin_height;
29182917 int w, h;
2918+ int fixed_width, fixed_height;
29192919
29202920 ::GetWindowRect(HVTWin, &wr);
29212921 ::GetClientRect(HVTWin, &cr);
29222922
2923- extra_width = wr.right - wr.left - cr.right + cr.left;
2924- extra_height = wr.bottom - wr.top - cr.bottom + cr.top;
2925- nWidth = (pRect->right) - (pRect->left) - extra_width;
2926- nHeight = (pRect->bottom) - (pRect->top) - extra_height;
2923+ margin_width = wr.right - wr.left - cr.right + cr.left;
2924+ margin_height = wr.bottom - wr.top - cr.bottom + cr.top;
2925+ nWidth = (pRect->right) - (pRect->left) - margin_width;
2926+ nHeight = (pRect->bottom) - (pRect->top) - margin_height;
29272927
29282928 w = nWidth / FontWidth;
29292929 h = nHeight / FontHeight;
29302930 UpdateSizeTip(HVTWin, w, h);
2931+
2932+ fixed_width = w * FontWidth + margin_width;
2933+ fixed_height = h * FontHeight + margin_height;
2934+
2935+ switch (fwSide) { // 幅調整
2936+ case 1: // 左
2937+ case 4: // 左上
2938+ case 7: // 左下
2939+ pRect->left = pRect->right - fixed_width;
2940+ break;
2941+ case 2: // 右
2942+ case 5: // 右上
2943+ case 8: // 右下
2944+ pRect->right = pRect->left + fixed_width;
2945+ break;
2946+ }
2947+
2948+ switch (fwSide) { // 高さ調整
2949+ case 3: // 上
2950+ case 4: // 左上
2951+ case 5: // 右上
2952+ pRect->top = pRect->bottom - fixed_height;
2953+ break;
2954+ case 6: // 下
2955+ case 7: // 左下
2956+ case 8: // 右下
2957+ pRect->bottom = pRect->top + fixed_height;
2958+ break;
2959+ }
2960+
2961+ CFrameWnd::OnSizing(fwSide, pRect);
29312962 }
29322963
29332964 void CVTWindow::OnSysChar(UINT nChar, UINT nRepCnt, UINT nFlags)
旧リポジトリブラウザで表示