Revision: 7434 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7434 Author: zmatsuo Date: 2019-02-24 02:46:15 +0900 (Sun, 24 Feb 2019) Log Message: ----------- IMEの状態設定/取得をメッセージを元に行うようにした CaretOn()#vtdisp.cの処理を軽くした Modified Paths: -------------- trunk/teraterm/teraterm/ttime.c trunk/teraterm/teraterm/vtdisp.c trunk/teraterm/teraterm/vtdisp.h trunk/teraterm/teraterm/vtterm.c trunk/teraterm/teraterm/vtwin.cpp trunk/teraterm/teraterm/vtwin.h -------------- next part -------------- Modified: trunk/teraterm/teraterm/ttime.c =================================================================== --- trunk/teraterm/teraterm/ttime.c 2019-02-20 11:01:29 UTC (rev 7433) +++ trunk/teraterm/teraterm/ttime.c 2019-02-23 17:46:15 UTC (rev 7434) @@ -248,6 +248,7 @@ HIMC hIMC; BOOL stat; + if (HIMEDLL==NULL) return FALSE; hIMC = (*PImmGetContext)(HVTWin); stat = (*PImmGetOpenStatus)(hIMC); (*PImmReleaseContext)(HVTWin, hIMC); @@ -259,6 +260,7 @@ void SetIMEOpenStatus(BOOL stat) { HIMC hIMC; + if (HIMEDLL==NULL) return; hIMC = (*PImmGetContext)(HVTWin); (*PImmSetOpenStatus)(hIMC, stat); (*PImmReleaseContext)(HVTWin, hIMC); Modified: trunk/teraterm/teraterm/vtdisp.c =================================================================== --- trunk/teraterm/teraterm/vtdisp.c 2019-02-20 11:01:29 UTC (rev 7433) +++ trunk/teraterm/teraterm/vtdisp.c 2019-02-23 17:46:15 UTC (rev 7434) @@ -110,6 +110,7 @@ // caret variables static int CaretStatus; static BOOL CaretEnabled = TRUE; +BOOL IMEstat; /* IME Status TRUE=IME ON */ // ---- device context and status flags static HDC VTDC = NULL; /* Device context for VT window */ @@ -2208,40 +2209,31 @@ void CaretOn() // Turn on the cursor { - int CaretX, CaretY, H; - HIMC hImc; - HBITMAP color; - int ime_on; - if (ts.KillFocusCursor == 0 && !Active) return; - /* IME\x82\xCCon/off\x8F\xF3\x91Ԃ\xF0\x8C\xA9\x82āA\x83J\x81[\x83\\x83\x8B\x82̐F\x82\xF0\x95ύX\x82\xB7\x82\xE9\x81B - * WM_INPUTLANGCHANGE, WM_IME_NOTIFY \x82ł̓J\x81[\x83\\x83\x8B\x82̍ĕ`\x89\xE6\x82̂ݍs\x82\xA4\x81B - * (2010.5.20 yutaka) - */ - hImc = ImmGetContext(HVTWin); - ime_on = ImmGetOpenStatus(hImc); - ImmReleaseContext(HVTWin, hImc); - if ((ts.WindowFlag & WF_IMECURSORCHANGE) != 0 && ime_on) { - color = (HBITMAP)1; - } else { - color = NULL; - } + if (! CaretEnabled) return; - CaretX = (CursorX-WinOrgX)*FontWidth; - CaretY = (CursorY-WinOrgY)*FontHeight; + if (Active) { + int CaretX, CaretY, H; + HBITMAP color; - if ((ts.Language==IdJapanese || ts.Language==IdKorean || ts.Language==IdUtf8) && - CanUseIME() && (ts.IMEInline>0)) - { - /* set IME conversion window pos. & font */ - SetConversionWindow(HVTWin,CaretX,CaretY); - } + /* IME\x82\xCCon/off\x8F\xF3\x91Ԃ\xF0\x8C\xA9\x82āA\x83J\x81[\x83\\x83\x8B\x82̐F\x82\xF0\x95ύX\x82\xB7\x82\xE9\x81B + * WM_INPUTLANGCHANGE, WM_IME_NOTIFY \x82ł̓J\x81[\x83\\x83\x8B\x82̍ĕ`\x89\xE6\x82̂ݍs\x82\xA4\x81B + * (2010.5.20 yutaka) + */ + if ((ts.WindowFlag & WF_IMECURSORCHANGE) == 0) { + color = 0; + } else { + if (IMEstat) { + color = (HBITMAP)1; + } else { + color = 0; + } + } - if (! CaretEnabled) return; - - if (Active) { + CaretX = (CursorX-WinOrgX)*FontWidth; + CaretY = (CursorY-WinOrgY)*FontHeight; if (ts.CursorShape!=IdVCur) { if (ts.CursorShape==IdHCur) { CaretY = CaretY+FontHeight-CurWidth; Modified: trunk/teraterm/teraterm/vtdisp.h =================================================================== --- trunk/teraterm/teraterm/vtdisp.h 2019-02-20 11:01:29 UTC (rev 7433) +++ trunk/teraterm/teraterm/vtdisp.h 2019-02-23 17:46:15 UTC (rev 7434) @@ -127,6 +127,8 @@ extern int PageStart, BuffEnd; extern TCharAttr DefCharAttr; +extern BOOL IMEstat; + #define SCROLL_BOTTOM 1 #define SCROLL_LINEDOWN 2 #define SCROLL_LINEUP 3 Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2019-02-20 11:01:29 UTC (rev 7433) +++ trunk/teraterm/teraterm/vtterm.c 2019-02-23 17:46:15 UTC (rev 7434) @@ -197,16 +197,13 @@ static int NewKeyId, NewKeyLen; /* Mouse Report */ -int MouseReportMode; -int MouseReportExtMode; -unsigned int DecLocatorFlag; -int LastX, LastY; -int ButtonStat; -int FilterTop, FilterBottom, FilterLeft, FilterRight; +static int MouseReportMode; +static int MouseReportExtMode; +static unsigned int DecLocatorFlag; +static int LastX, LastY; +static int ButtonStat; +static int FilterTop, FilterBottom, FilterLeft, FilterRight; -/* IME Status */ -BOOL IMEstat; - /* Beep over-used */ static DWORD BeepStartTime = 0; static DWORD BeepSuppressTime = 0; Modified: trunk/teraterm/teraterm/vtwin.cpp =================================================================== --- trunk/teraterm/teraterm/vtwin.cpp 2019-02-20 11:01:29 UTC (rev 7433) +++ trunk/teraterm/teraterm/vtwin.cpp 2019-02-23 17:46:15 UTC (rev 7434) @@ -159,6 +159,7 @@ ON_WM_TIMER() ON_WM_VSCROLL() ON_WM_DEVICECHANGE() + ON_MESSAGE(WM_IME_STARTCOMPOSITION,OnIMEStartComposition) ON_MESSAGE(WM_IME_COMPOSITION,OnIMEComposition) ON_MESSAGE(WM_INPUTLANGCHANGE,OnIMEInputChange) ON_MESSAGE(WM_IME_NOTIFY,OnIMENotify) @@ -3229,8 +3230,18 @@ } //--> -LONG CVTWindow::OnIMEComposition(UINT wParam, LONG lParam) +LRESULT CVTWindow::OnIMEStartComposition(WPARAM wParam, LPARAM lParam) { + // \x88ʒu\x82\xF0\x92ʒm\x82\xB7\x82\xE9 + int CaretX = (CursorX-WinOrgX)*FontWidth; + int CaretY = (CursorY-WinOrgY)*FontHeight; + SetConversionWindow(HVTWin,CaretX,CaretY); + + return CFrameWnd::DefWindowProc(WM_IME_STARTCOMPOSITION,wParam,lParam); +} + +LRESULT CVTWindow::OnIMEComposition(WPARAM wParam, LPARAM lParam) +{ HGLOBAL hstr; //LPSTR lpstr; wchar_t *lpstr; @@ -3297,6 +3308,15 @@ LONG CVTWindow::OnIMENotify(UINT wParam, LONG lParam) { if (wParam == IMN_SETOPENSTATUS) { + // IME\x82\xCCOn/Off\x82\xF0\x8E擾\x82\xB7\x82\xE9 + IMEstat = GetIMEOpenStatus(); + + // \x8F\xF3\x91Ԃ\xF0\x95\\x8E\xA6\x82\xB7\x82\xE9IME\x82̂\xBD\x82߂Ɉʒu\x82\xF0\x92ʒm\x82\xB7\x82\xE9 + int CaretX = (CursorX-WinOrgX)*FontWidth; + int CaretY = (CursorY-WinOrgY)*FontHeight; + SetConversionWindow(HVTWin,CaretX,CaretY); + + // \x95`\x89\xE6 ChangeCaret(); } Modified: trunk/teraterm/teraterm/vtwin.h =================================================================== --- trunk/teraterm/teraterm/vtwin.h 2019-02-20 11:01:29 UTC (rev 7433) +++ trunk/teraterm/teraterm/vtwin.h 2019-02-23 17:46:15 UTC (rev 7434) @@ -135,6 +135,7 @@ afx_msg LONG OnEnterSizeMove(UINT wParam, LONG lParam); afx_msg LONG OnExitSizeMove(UINT wParam, LONG lParam); //--> + afx_msg LRESULT OnIMEStartComposition(WPARAM wParam, LPARAM lParam); afx_msg LONG OnIMEComposition(UINT wParam, LONG lParam); afx_msg LONG OnIMEInputChange(UINT wParam, LONG lParam); afx_msg LONG OnIMENotify(UINT wParam, LONG lParam);