diff options
Diffstat (limited to 'win32')
| -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));  | 
