diff options
author | crupest <crupest@outlook.com> | 2020-04-05 21:44:07 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-04-05 21:44:07 +0800 |
commit | abcaa16c897678fa3fa4cda3f23660e4ca46b841 (patch) | |
tree | 1ce5fb102548d28a33838f2c30d5ed4e6571abbf /src/win/native/window.cpp | |
parent | 37bb421e963662e8203acbe3a03bdbd5d1f5858e (diff) | |
download | cru-abcaa16c897678fa3fa4cda3f23660e4ca46b841.tar.gz cru-abcaa16c897678fa3fa4cda3f23660e4ca46b841.tar.bz2 cru-abcaa16c897678fa3fa4cda3f23660e4ca46b841.zip |
...
Diffstat (limited to 'src/win/native/window.cpp')
-rw-r--r-- | src/win/native/window.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/win/native/window.cpp b/src/win/native/window.cpp index 6f66cb57..a0ac2f6f 100644 --- a/src/win/native/window.cpp +++ b/src/win/native/window.cpp @@ -404,8 +404,16 @@ void WinNativeWindow::OnKeyUpInternal(int virtual_code) { } void WinNativeWindow::OnCharInternal(wchar_t c) { - wchar_t s[2] = {c, 0}; - char_event_.Raise(platform::win::ToUtf8String(s)); + if (platform::win::IsSurrogatePairLeading(c)) { + last_wm_char_event_wparam_ = c; + return; + } else if (platform::win::IsSurrogatePairTrailing(c)) { + wchar_t s[3] = {last_wm_char_event_wparam_, c, 0}; + char_event_.Raise(platform::win::ToUtf8String(s)); + } else { + wchar_t s[2] = {c, 0}; + char_event_.Raise(platform::win::ToUtf8String(s)); + } } void WinNativeWindow::OnActivatedInternal() {} |