Index: ui/base/ime/input_method_win.h |
diff --git a/ui/base/ime/input_method_win.h b/ui/base/ime/input_method_win.h |
index 39cb89ce361d2834bf805b5e0ccb18ab9638617f..b02d670c17aa99616f3f5ee58145a0117bd148a3 100644 |
--- a/ui/base/ime/input_method_win.h |
+++ b/ui/base/ime/input_method_win.h |
@@ -16,7 +16,7 @@ |
namespace ui { |
-// A common InputMethod implementation shared between IMM32 and TSF. |
+// A common InputMethod implementation based on IMM32. |
class UI_BASE_EXPORT InputMethodWin : public InputMethodBase { |
public: |
InputMethodWin(internal::InputMethodDelegate* delegate, |
@@ -24,25 +24,29 @@ class UI_BASE_EXPORT InputMethodWin : public InputMethodBase { |
// Overridden from InputMethod: |
virtual void Init(bool focused) OVERRIDE; |
+ virtual void OnFocus() OVERRIDE; |
+ virtual void OnBlur() OVERRIDE; |
+ virtual bool OnUntranslatedIMEMessage(const base::NativeEvent& event, |
+ NativeEventResult* result) OVERRIDE; |
virtual bool DispatchKeyEvent(const ui::KeyEvent& event) OVERRIDE; |
+ virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE; |
+ virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE; |
+ virtual void CancelComposition(const TextInputClient* client) OVERRIDE; |
virtual void OnInputLocaleChanged() OVERRIDE; |
virtual std::string GetInputLocale() OVERRIDE; |
virtual bool IsActive() OVERRIDE; |
+ virtual bool IsCandidatePopupOpen() const OVERRIDE; |
protected: |
// Overridden from InputMethodBase: |
// If a derived class overrides this method, it should call parent's |
// implementation. |
+ virtual void OnWillChangeFocusedClient(TextInputClient* focused_before, |
+ TextInputClient* focused) OVERRIDE; |
virtual void OnDidChangeFocusedClient(TextInputClient* focused_before, |
TextInputClient* focused) OVERRIDE; |
- // Some IMEs rely on WM_IME_REQUEST message even when TSF is enabled. So |
- // OnImeRequest (and its actual implementations as OnDocumentFeed, |
- // OnReconvertString, and OnQueryCharPosition) are placed in this base class. |
- LRESULT OnImeRequest(UINT message, |
- WPARAM wparam, |
- LPARAM lparam, |
- BOOL* handled); |
+ private: |
// For both WM_CHAR and WM_SYSCHAR |
LRESULT OnChar(HWND window_handle, |
UINT message, |
@@ -50,6 +54,38 @@ class UI_BASE_EXPORT InputMethodWin : public InputMethodBase { |
LPARAM lparam, |
BOOL* handled); |
+ LRESULT OnImeSetContext(HWND window_handle, |
+ UINT message, |
+ WPARAM wparam, |
+ LPARAM lparam, |
+ BOOL* handled); |
+ LRESULT OnImeStartComposition(HWND window_handle, |
+ UINT message, |
+ WPARAM wparam, |
+ LPARAM lparam, |
+ BOOL* handled); |
+ LRESULT OnImeComposition(HWND window_handle, |
+ UINT message, |
+ WPARAM wparam, |
+ LPARAM lparam, |
+ BOOL* handled); |
+ LRESULT OnImeEndComposition(HWND window_handle, |
+ UINT message, |
+ WPARAM wparam, |
+ LPARAM lparam, |
+ BOOL* handled); |
+ LRESULT OnImeNotify(UINT message, |
+ WPARAM wparam, |
+ LPARAM lparam, |
+ BOOL* handled); |
+ |
+ // Some IMEs rely on WM_IME_REQUEST message even when TSF is enabled. So |
+ // OnImeRequest (and its actual implementations as OnDocumentFeed, |
+ // OnReconvertString, and OnQueryCharPosition) are placed in this base class. |
+ LRESULT OnImeRequest(UINT message, |
+ WPARAM wparam, |
+ LPARAM lparam, |
+ BOOL* handled); |
LRESULT OnDocumentFeed(RECONVERTSTRING* reconv); |
LRESULT OnReconvertString(RECONVERTSTRING* reconv); |
LRESULT OnQueryCharPosition(IMECHARPOSITION* char_positon); |
@@ -62,16 +98,18 @@ class UI_BASE_EXPORT InputMethodWin : public InputMethodBase { |
// to be ready for receiving keyboard input. |
bool IsWindowFocused(const TextInputClient* client) const; |
- // Indicates if the current input locale has an IME. |
- bool active_; |
+ bool DispatchFabricatedKeyEvent(const ui::KeyEvent& event); |
+ |
+ // Asks the client to confirm current composition text. |
+ void ConfirmCompositionText(); |
+ |
+ // Enables or disables the IME according to the current text input type. |
+ void UpdateIMEState(); |
// Windows IMM32 wrapper. |
// (See "ui/base/ime/win/ime_input.h" for its details.) |
ui::IMM32Manager imm32_manager_; |
- private: |
- bool DispatchFabricatedKeyEvent(const ui::KeyEvent& event); |
- |
// The toplevel window handle. |
// On non-Aura environment, this value is not used and always NULL. |
const HWND toplevel_window_handle_; |
@@ -90,6 +128,19 @@ class UI_BASE_EXPORT InputMethodWin : public InputMethodBase { |
// TODO(yukawa, IME): Figure out long-term solution. |
bool accept_carriage_return_; |
+ // Indicates if the current input locale has an IME. |
+ bool active_; |
+ |
+ // True when an IME should be allowed to process key events. |
+ bool enabled_; |
+ |
+ // True if we know for sure that a candidate window is open. |
+ bool is_candidate_popup_open_; |
+ |
+ // Window handle where composition is on-going. NULL when there is no |
+ // composition. |
+ HWND composing_window_handle_; |
+ |
DISALLOW_COPY_AND_ASSIGN(InputMethodWin); |
}; |