// 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. #ifndef UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_H_ #define UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_H_ #include "base/strings/string16.h" #include "ui/base/ime/text_input_type.h" #include "ui/base/ui_base_export.h" namespace gfx { class Rect; } namespace ui { struct CompositionText; class KeyEvent; // An interface of input method context for input method frameworks on // GNU/Linux and likes. class UI_BASE_EXPORT LinuxInputMethodContext { public: virtual ~LinuxInputMethodContext() {} // Dispatches the key event to an underlying IME. Returns true if the key // event is handled, otherwise false. A client must set the text input type // before dispatching a key event. virtual bool DispatchKeyEvent(const ui::KeyEvent& key_event) = 0; // Resets the context. A client needs to call OnTextInputTypeChanged() again // before calling DispatchKeyEvent(). virtual void Reset() = 0; // Notifies the context that the text input type has changed. virtual void OnTextInputTypeChanged(TextInputType text_input_type) = 0; // Notifies the context that the caret bounds have changed. |caret_bounds| is // relative to screen coordinates. virtual void OnCaretBoundsChanged(const gfx::Rect& caret_bounds) = 0; }; // An interface of callback functions called from LinuxInputMethodContext. class UI_BASE_EXPORT LinuxInputMethodContextDelegate { public: virtual ~LinuxInputMethodContextDelegate() {} // Commits the |text| to the text input client. virtual void OnCommit(const base::string16& text) = 0; // Sets the composition text to the text input client. virtual void OnPreeditChanged(const CompositionText& composition_text) = 0; // Cleans up a composition session and makes sure that the composition text is // cleared. virtual void OnPreeditEnd() = 0; // Prepares things for a new composition session. virtual void OnPreeditStart() = 0; }; } // namespace ui #endif // UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_H_