• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision6459 (tree)
Time2016-08-03 02:33:43
Authordoda

Log Message

・Tek Window での貼り付け時、確認ダイアログが出た時に VT Window にフォーカスが移るのを修正
・Tek Window での Alt-V / Alt-R による貼り付け時、Bracketed Paste Mode が適用されないようにした

Tek Window での貼り付けで確認ダイアログが出ない問題自体は r6456 で修正。

Change Summary

Incremental Difference

--- trunk/teraterm/teraterm/vtwin.cpp (revision 6458)
+++ trunk/teraterm/teraterm/vtwin.cpp (revision 6459)
@@ -1761,15 +1761,9 @@
17611761 if (!ts.DisableAcceleratorSendBreak)
17621762 OnControlSendBreak();
17631763 return TRUE;
1764- case ID_ACC_PASTECR:
1765- OnEditPasteCR();
1766- return TRUE;
17671764 case ID_ACC_AREYOUTHERE:
17681765 OnControlAreYouThere();
17691766 return TRUE;
1770- case ID_ACC_PASTE:
1771- OnEditPaste();
1772- return TRUE;
17731767 }
17741768 if (ActiveWin==IdVT) {
17751769 switch (wID) {
@@ -1792,6 +1786,12 @@
17921786 case ID_ACC_COPY:
17931787 OnEditCopy();
17941788 return TRUE;
1789+ case ID_ACC_PASTECR:
1790+ OnEditPasteCR();
1791+ return TRUE;
1792+ case ID_ACC_PASTE:
1793+ OnEditPaste();
1794+ return TRUE;
17951795 case ID_ACC_PRINT:
17961796 OnFilePrint();
17971797 return TRUE;
@@ -1805,6 +1805,12 @@
18051805 case ID_ACC_COPY:
18061806 ::PostMessage(HTEKWin,WM_COMMAND,ID_TEKEDIT_COPY,0);
18071807 return TRUE;
1808+ case ID_ACC_PASTECR:
1809+ ::PostMessage(HTEKWin,WM_COMMAND,ID_TEKEDIT_PASTECR,0);
1810+ return TRUE;
1811+ case ID_ACC_PASTE:
1812+ ::PostMessage(HTEKWin,WM_COMMAND,ID_TEKEDIT_PASTE,0);
1813+ return TRUE;
18081814 case ID_ACC_PRINT:
18091815 ::PostMessage(HTEKWin,WM_COMMAND,ID_TEKFILE_PRINT,0);
18101816 return TRUE;
--- trunk/teraterm/teraterm/clipboar.c (revision 6458)
+++ trunk/teraterm/teraterm/clipboar.c (revision 6459)
@@ -197,7 +197,7 @@
197197 * TRUE -> 問題なし、貼り付けを実施
198198 * FALSE -> 貼り付け中止
199199 */
200-BOOL CheckClipboardContent(BOOL AddCR, BOOL Bracketed)
200+BOOL CheckClipboardContent(HWND HWin, BOOL AddCR, BOOL Bracketed)
201201 {
202202 int pos;
203203 int ret = IDOK;
@@ -241,7 +241,7 @@
241241
242242 if (confirm) {
243243 ret = DialogBox(hInst, MAKEINTRESOURCE(IDD_CLIPBOARD_DIALOG),
244- HVTWin, (DLGPROC)OnClipboardDlgProc);
244+ HWin, (DLGPROC)OnClipboardDlgProc);
245245 /*
246246 * 以前はダイアログの内容をクリップボードに書き戻していたけれど、必要?
247247 */
@@ -358,7 +358,7 @@
358358 return;
359359 }
360360
361- if (!CheckClipboardContent(AddCR, Bracketed)) {
361+ if (!CheckClipboardContent(HWin, AddCR, Bracketed)) {
362362 CBEndPaste();
363363 return;
364364 }
@@ -778,9 +778,24 @@
778778
779779 SendMessage(GetDlgItem(hDlgWnd, IDC_EDIT), WM_SETTEXT, 0, (LPARAM)CBMemPtr);
780780
781- DispConvScreenToWin(CursorX, CursorY, &p.x, &p.y);
782- ClientToScreen(HVTWin, &p);
781+ if (ActiveWin == IdVT) { // VT Window
782+ /*
783+ * Caret off 時に GetCaretPos() で正確な場所が取れないので、
784+ * vtdisp.c 内部で管理している値から計算する
785+ */
786+ DispConvScreenToWin(CursorX, CursorY, &p.x, &p.y);
787+ }
788+ else if (!GetCaretPos(&p)) { // Tek Window
789+ /*
790+ * Tek Window は内部管理の値を取るのが面倒なので GetCaretPos() を使う
791+ * GetCaretPos() がエラーになった場合は念のため 0, 0 を入れておく
792+ */
793+ p.x = 0;
794+ p.y = 0;
795+ }
783796
797+ ClientToScreen(GetParent(hDlgWnd), &p);
798+
784799 // キャレットが画面からはみ出しているときに貼り付けをすると
785800 // 確認ウインドウが見えるところに表示されないことがある。
786801 // ウインドウからはみ出した場合に調節する (2008.4.24 maya)
Show on old repository browser