From fc5ddc3058fe1fdfcdfdf849f2df6535147cd5c2 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Tue, 22 Mar 2016 12:42:10 -0700 Subject: [PATCH] Skip char key events It's confusing to send two key press events. Instead, just send the lower-level, non-char event. The real fix will be to define a sensible key event protocol for Mozart, but this patch unblocks people who are experimenting at higher layers of the stack. --- sky/shell/platform/mojo/view_impl.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sky/shell/platform/mojo/view_impl.cc b/sky/shell/platform/mojo/view_impl.cc index 3c43abacddf..ade52d82c46 100644 --- a/sky/shell/platform/mojo/view_impl.cc +++ b/sky/shell/platform/mojo/view_impl.cc @@ -13,7 +13,7 @@ namespace shell { namespace { sky::InputEventPtr ConvertKeyEvent(mojo::EventPtr event) { - if (!event->key_data) + if (!event->key_data || event->key_data->is_char) return nullptr; sky::InputEventPtr result = sky::InputEvent::New(); result->time_stamp = event->time_stamp; @@ -28,7 +28,7 @@ sky::InputEventPtr ConvertKeyEvent(mojo::EventPtr event) { return nullptr; } result->key_data = sky::KeyData::New(); - result->key_data->key_code = event->key_data->key_code; + result->key_data->key_code = static_cast(event->key_data->windows_key_code); if (static_cast(event->flags) & static_cast(mojo::EventFlags::SHIFT_DOWN)) result->key_data->meta_state |= 0x00000001; if (static_cast(event->flags) & static_cast(mojo::EventFlags::CONTROL_DOWN)) @@ -136,6 +136,8 @@ void ViewImpl::OnEvent(mojo::EventPtr event, const OnEventCallback& callback) { case mojo::EventType::KEY_PRESSED: case mojo::EventType::KEY_RELEASED: { auto sky_event = ConvertKeyEvent(event.Pass()); + if (!sky_event) + break; for (auto& listener : raw_keyboard_listeners_) listener->OnKey(sky_event.Clone()); break;