| Index: ui/base/ime/input_method_linux_x11.cc
|
| diff --git a/ui/base/ime/input_method_linux_x11.cc b/ui/base/ime/input_method_linux_x11.cc
|
| deleted file mode 100644
|
| index 7ed66d3f8a5e27d1470a16058c21ca33ad609ff0..0000000000000000000000000000000000000000
|
| --- a/ui/base/ime/input_method_linux_x11.cc
|
| +++ /dev/null
|
| @@ -1,185 +0,0 @@
|
| -// Copyright 2013 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 "ui/base/ime/input_method_linux_x11.h"
|
| -
|
| -#include "base/environment.h"
|
| -#include "ui/base/ime/linux/linux_input_method_context_factory.h"
|
| -#include "ui/base/ime/text_input_client.h"
|
| -#include "ui/events/event.h"
|
| -
|
| -namespace ui {
|
| -
|
| -InputMethodLinuxX11::InputMethodLinuxX11(
|
| - internal::InputMethodDelegate* delegate) {
|
| - SetDelegate(delegate);
|
| -}
|
| -
|
| -InputMethodLinuxX11::~InputMethodLinuxX11() {}
|
| -
|
| -// static
|
| -void InputMethodLinuxX11::Initialize() {
|
| - // Force a IBus IM context to run in synchronous mode.
|
| - //
|
| - // Background: IBus IM context runs by default in asynchronous mode. In
|
| - // this mode, gtk_im_context_filter_keypress() consumes all the key events
|
| - // and returns true while asynchronously sending the event to an underlying
|
| - // IME implementation. When the event has not actually been consumed by
|
| - // the underlying IME implementation, the context pushes the event back to
|
| - // the GDK event queue marking the event as already handled by the IBus IM
|
| - // context.
|
| - //
|
| - // The problem here is that those pushed-back GDK events are never handled
|
| - // when base::MessagePumpX11 is used, which only handles X events. So, we
|
| - // make a IBus IM context run in synchronous mode by setting an environment
|
| - // variable. This is only the interface to change the mode.
|
| - //
|
| - // Another possible solution is to use GDK event loop instead of X event
|
| - // loop.
|
| - //
|
| - // Since there is no reentrant version of setenv(3C), it's a caller's duty
|
| - // to avoid race conditions. This function should be called in the main
|
| - // thread on a very early stage, and supposed to be called from
|
| - // ui::InitializeInputMethod().
|
| - scoped_ptr<base::Environment> env(base::Environment::Create());
|
| - env->SetVar("IBUS_ENABLE_SYNC_MODE", "1");
|
| -}
|
| -
|
| -// Overriden from InputMethod.
|
| -
|
| -void InputMethodLinuxX11::Init(bool focused) {
|
| - CHECK(LinuxInputMethodContextFactory::instance());
|
| - input_method_context_ =
|
| - LinuxInputMethodContextFactory::instance()->CreateInputMethodContext(
|
| - this);
|
| - CHECK(input_method_context_.get());
|
| -
|
| - InputMethodBase::Init(focused);
|
| -
|
| - if (focused) {
|
| - input_method_context_->OnTextInputTypeChanged(
|
| - GetTextInputClient() ?
|
| - GetTextInputClient()->GetTextInputType() :
|
| - TEXT_INPUT_TYPE_TEXT);
|
| - }
|
| -}
|
| -
|
| -bool InputMethodLinuxX11::OnUntranslatedIMEMessage(
|
| - const base::NativeEvent& event,
|
| - NativeEventResult* result) {
|
| - return false;
|
| -}
|
| -
|
| -bool InputMethodLinuxX11::DispatchKeyEvent(const ui::KeyEvent& event) {
|
| - DCHECK(event.type() == ET_KEY_PRESSED || event.type() == ET_KEY_RELEASED);
|
| - DCHECK(system_toplevel_window_focused());
|
| -
|
| - // If no text input client, do nothing.
|
| - if (!GetTextInputClient())
|
| - return DispatchKeyEventPostIME(event);
|
| -
|
| - // Let an IME handle the key event first.
|
| - if (input_method_context_->DispatchKeyEvent(event)) {
|
| - if (event.type() == ET_KEY_PRESSED) {
|
| - const ui::KeyEvent fabricated_event(ET_KEY_PRESSED,
|
| - VKEY_PROCESSKEY,
|
| - event.flags(),
|
| - false); // is_char
|
| - DispatchKeyEventPostIME(fabricated_event);
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - // Otherwise, insert the character.
|
| - const bool handled = DispatchKeyEventPostIME(event);
|
| - if (event.type() == ET_KEY_PRESSED && GetTextInputClient()) {
|
| - const uint16 ch = event.GetCharacter();
|
| - if (ch) {
|
| - GetTextInputClient()->InsertChar(ch, event.flags());
|
| - return true;
|
| - }
|
| - }
|
| - return handled;
|
| -}
|
| -
|
| -void InputMethodLinuxX11::OnTextInputTypeChanged(
|
| - const TextInputClient* client) {
|
| - if (!IsTextInputClientFocused(client))
|
| - return;
|
| - input_method_context_->Reset();
|
| - // TODO(yoichio): Support inputmode HTML attribute.
|
| - input_method_context_->OnTextInputTypeChanged(client->GetTextInputType());
|
| -}
|
| -
|
| -void InputMethodLinuxX11::OnCaretBoundsChanged(const TextInputClient* client) {
|
| - if (!IsTextInputClientFocused(client))
|
| - return;
|
| - input_method_context_->OnCaretBoundsChanged(
|
| - GetTextInputClient()->GetCaretBounds());
|
| -}
|
| -
|
| -void InputMethodLinuxX11::CancelComposition(const TextInputClient* client) {
|
| - if (!IsTextInputClientFocused(client))
|
| - return;
|
| - input_method_context_->Reset();
|
| - input_method_context_->OnTextInputTypeChanged(client->GetTextInputType());
|
| -}
|
| -
|
| -void InputMethodLinuxX11::OnInputLocaleChanged() {
|
| -}
|
| -
|
| -std::string InputMethodLinuxX11::GetInputLocale() {
|
| - return "";
|
| -}
|
| -
|
| -base::i18n::TextDirection InputMethodLinuxX11::GetInputTextDirection() {
|
| - return input_method_context_->GetInputTextDirection();
|
| -}
|
| -
|
| -bool InputMethodLinuxX11::IsActive() {
|
| - // InputMethodLinuxX11 is always ready and up.
|
| - return true;
|
| -}
|
| -
|
| -bool InputMethodLinuxX11::IsCandidatePopupOpen() const {
|
| - // There seems no way to detect candidate windows or any popups.
|
| - return false;
|
| -}
|
| -
|
| -// Overriden from ui::LinuxInputMethodContextDelegate
|
| -
|
| -void InputMethodLinuxX11::OnCommit(const base::string16& text) {
|
| - TextInputClient* text_input_client = GetTextInputClient();
|
| - if (text_input_client)
|
| - text_input_client->InsertText(text);
|
| -}
|
| -
|
| -void InputMethodLinuxX11::OnPreeditChanged(
|
| - const CompositionText& composition_text) {
|
| - TextInputClient* text_input_client = GetTextInputClient();
|
| - if (text_input_client)
|
| - text_input_client->SetCompositionText(composition_text);
|
| -}
|
| -
|
| -void InputMethodLinuxX11::OnPreeditEnd() {
|
| - TextInputClient* text_input_client = GetTextInputClient();
|
| - if (text_input_client && text_input_client->HasCompositionText())
|
| - text_input_client->ClearCompositionText();
|
| -}
|
| -
|
| -void InputMethodLinuxX11::OnPreeditStart() {}
|
| -
|
| -// Overridden from InputMethodBase.
|
| -
|
| -void InputMethodLinuxX11::OnDidChangeFocusedClient(
|
| - TextInputClient* focused_before,
|
| - TextInputClient* focused) {
|
| - input_method_context_->Reset();
|
| - input_method_context_->OnTextInputTypeChanged(
|
| - focused ? focused->GetTextInputType() : TEXT_INPUT_TYPE_NONE);
|
| -
|
| - InputMethodBase::OnDidChangeFocusedClient(focused_before, focused);
|
| -}
|
| -
|
| -} // namespace ui
|
|
|