diff options
Diffstat (limited to 'win32/ScintillaWin.cxx')
-rw-r--r-- | win32/ScintillaWin.cxx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index b06683a9b..b4c5a825f 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -283,6 +283,7 @@ private: HBITMAP sysCaretBitmap; int sysCaretWidth; int sysCaretHeight; + bool keysAlwaysUnicode; }; HINSTANCE ScintillaWin::hInstance = 0; @@ -320,6 +321,8 @@ ScintillaWin::ScintillaWin(HWND hwnd) { sysCaretWidth = 0; sysCaretHeight = 0; + keysAlwaysUnicode = false; + Initialise(); } @@ -763,7 +766,7 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam case WM_CHAR: if (((wParam >= 128) || !iscntrl(wParam)) || !lastKeyDownConsumed) { - if (::IsWindowUnicode(MainHWND())) { + if (::IsWindowUnicode(MainHWND()) || keysAlwaysUnicode) { wchar_t wcs[2] = {wParam, 0}; if (IsUnicodeMode()) { // For a wide character version of the window: @@ -1011,6 +1014,13 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam ::SetFocus(MainHWND()); break; + case SCI_SETKEYSUNICODE: + keysAlwaysUnicode = wParam != 0; + break; + + case SCI_GETKEYSUNICODE: + return keysAlwaysUnicode; + #ifdef SCI_LEXER case SCI_LOADLEXERLIBRARY: LexerManager::GetInstance()->Load(reinterpret_cast<const char*>(lParam)); |