| Index: ui/base/ime/input_method_base.h
|
| diff --git a/ui/base/ime/input_method_base.h b/ui/base/ime/input_method_base.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8466f24a5ace88ac0853944cbcf31ecc357dfe96
|
| --- /dev/null
|
| +++ b/ui/base/ime/input_method_base.h
|
| @@ -0,0 +1,83 @@
|
| +// Copyright (c) 2011 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_INPUT_METHOD_BASE_H_
|
| +#define UI_BASE_IME_INPUT_METHOD_BASE_H_
|
| +#pragma once
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/compiler_specific.h"
|
| +#include "ui/base/events.h"
|
| +#include "ui/base/ime/input_method.h"
|
| +#include "ui/base/ui_export.h"
|
| +
|
| +namespace gfx {
|
| +class Rect;
|
| +} // namespace gfx
|
| +
|
| +namespace ui {
|
| +
|
| +class TextInputClient;
|
| +
|
| +// A helper class providing functionalities shared among ui::InputMethod
|
| +// implementations.
|
| +class UI_EXPORT InputMethodBase : public InputMethod {
|
| + public:
|
| + InputMethodBase();
|
| + virtual ~InputMethodBase();
|
| +
|
| + // Overriden from InputMethod.
|
| + virtual void set_delegate(internal::InputMethodDelegate* delegate) OVERRIDE;
|
| + virtual void Init(const base::NativeWindow& system_toplevel_window) OVERRIDE;
|
| + // If a derived class overrides OnFocus()/OnBlur(), it should call parent's
|
| + // implementation first, to make sure |system_toplevel_window_focused_| flag
|
| + // can be updated correctly.
|
| + virtual void OnFocus() OVERRIDE;
|
| + virtual void OnBlur() OVERRIDE;
|
| + virtual void SetFocusedTextInputClient(TextInputClient* client) OVERRIDE;
|
| + virtual TextInputClient* GetTextInputClient() const OVERRIDE;
|
| +
|
| + // If a derived class overrides this method, it should call parent's
|
| + // implementation.
|
| + virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE;
|
| +
|
| + virtual TextInputType GetTextInputType() const OVERRIDE;
|
| +
|
| + protected:
|
| + // Returns true if |client| is currently focused.
|
| + bool IsTextInputClientFocused(const TextInputClient* client);
|
| +
|
| + // Checks if the focused text input client's text input type is
|
| + // TEXT_INPUT_TYPE_NONE. Also returns true if there is no focused text
|
| + // input client.
|
| + bool IsTextInputTypeNone() const;
|
| +
|
| + // Convenience method to call the focused text input client's
|
| + // OnInputMethodChanged() method. It'll only take effect if the current text
|
| + // input type is not TEXT_INPUT_TYPE_NONE.
|
| + void OnInputMethodChanged() const;
|
| +
|
| + // Convenience method to call delegate_->DispatchKeyEventPostIME().
|
| + void DispatchKeyEventPostIME(const base::NativeEvent& native_event) const;
|
| +
|
| + // Convenience method to call delegate_->DispatchFabricatedKeyEventPostIME().
|
| + void DispatchFabricatedKeyEventPostIME(
|
| + EventType type, KeyboardCode key_code, int flags) const;
|
| +
|
| + bool system_toplevel_window_focused() const {
|
| + return system_toplevel_window_focused_;
|
| + }
|
| +
|
| + private:
|
| + internal::InputMethodDelegate* delegate_;
|
| + TextInputClient* text_input_client_;
|
| +
|
| + bool system_toplevel_window_focused_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(InputMethodBase);
|
| +};
|
| +
|
| +} // namespace ui
|
| +
|
| +#endif // UI_BASE_IME_INPUT_METHOD_BASE_H_
|
|
|