Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(424)

Unified Diff: ui/base/ime/input_method_linux_x11.cc

Issue 108143003: Rename input_method_linux_x11 as input_method_auralinux. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix windows build Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/ime/input_method_linux_x11.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ui/base/ime/input_method_linux_x11.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698