aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/win/native/window.cpp12
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() {}