| Index: mojo/views/input_method_mojo_linux.cc
|
| diff --git a/mojo/views/input_method_mojo_linux.cc b/mojo/views/input_method_mojo_linux.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e54b6448175f03f7ccbe7a0c1db88e27a31b22c1
|
| --- /dev/null
|
| +++ b/mojo/views/input_method_mojo_linux.cc
|
| @@ -0,0 +1,43 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "mojo/views/input_method_mojo_linux.h"
|
| +
|
| +#include "ui/base/ime/text_input_client.h"
|
| +#include "ui/events/event.h"
|
| +
|
| +namespace mojo {
|
| +
|
| +InputMethodMojoLinux::InputMethodMojoLinux(
|
| + ui::internal::InputMethodDelegate* delegate)
|
| + : ui::InputMethodAuraLinux(delegate) {
|
| +}
|
| +
|
| +InputMethodMojoLinux::~InputMethodMojoLinux() {}
|
| +
|
| +bool InputMethodMojoLinux::DispatchKeyEvent(const ui::KeyEvent& event) {
|
| + DCHECK(event.type() == ui::ET_KEY_PRESSED ||
|
| + event.type() == ui::ET_KEY_RELEASED);
|
| + DCHECK(system_toplevel_window_focused());
|
| +
|
| + // If no text input client, do nothing.
|
| + if (!GetTextInputClient())
|
| + return DispatchKeyEventPostIME(event);
|
| +
|
| + // Here is where we change the differ from our base class's logic. Instead of
|
| + // always dispatching a key down event, and then sending a synthesized
|
| + // character event, we instead check to see if this is a character event and
|
| + // send out the key if it is. (We fallback to normal dispatch if it isn't.)
|
| + if (event.is_char()) {
|
| + const uint16 ch = event.GetCharacter();
|
| + if (GetTextInputClient())
|
| + GetTextInputClient()->InsertChar(ch, event.flags());
|
| +
|
| + return false;
|
| + }
|
| +
|
| + return DispatchKeyEventPostIME(event);
|
| +}
|
| +
|
| +} // namespace mojo
|
|
|