| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef UI_BASE_IME_INPUT_METHOD_IBUS_H_ | 5 #ifndef UI_BASE_IME_INPUT_METHOD_IBUS_H_ |
| 6 #define UI_BASE_IME_INPUT_METHOD_IBUS_H_ | 6 #define UI_BASE_IME_INPUT_METHOD_IBUS_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 public chromeos::IBusInputContextHandlerInterface { | 34 public chromeos::IBusInputContextHandlerInterface { |
| 35 public: | 35 public: |
| 36 explicit InputMethodIBus(internal::InputMethodDelegate* delegate); | 36 explicit InputMethodIBus(internal::InputMethodDelegate* delegate); |
| 37 virtual ~InputMethodIBus(); | 37 virtual ~InputMethodIBus(); |
| 38 | 38 |
| 39 // Overridden from InputMethod: | 39 // Overridden from InputMethod: |
| 40 virtual void OnFocus() OVERRIDE; | 40 virtual void OnFocus() OVERRIDE; |
| 41 virtual void OnBlur() OVERRIDE; | 41 virtual void OnBlur() OVERRIDE; |
| 42 virtual bool OnUntranslatedIMEMessage(const base::NativeEvent& event, | 42 virtual bool OnUntranslatedIMEMessage(const base::NativeEvent& event, |
| 43 NativeEventResult* result) OVERRIDE; | 43 NativeEventResult* result) OVERRIDE; |
| 44 virtual bool DispatchKeyEvent( | 44 virtual bool DispatchKeyEvent(const ui::KeyEvent& event) OVERRIDE; |
| 45 const base::NativeEvent& native_key_event) OVERRIDE; | |
| 46 virtual bool DispatchFabricatedKeyEvent(const ui::KeyEvent& event) OVERRIDE; | 45 virtual bool DispatchFabricatedKeyEvent(const ui::KeyEvent& event) OVERRIDE; |
| 47 virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE; | 46 virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE; |
| 48 virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE; | 47 virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE; |
| 49 virtual void CancelComposition(const TextInputClient* client) OVERRIDE; | 48 virtual void CancelComposition(const TextInputClient* client) OVERRIDE; |
| 50 virtual std::string GetInputLocale() OVERRIDE; | 49 virtual std::string GetInputLocale() OVERRIDE; |
| 51 virtual base::i18n::TextDirection GetInputTextDirection() OVERRIDE; | 50 virtual base::i18n::TextDirection GetInputTextDirection() OVERRIDE; |
| 52 virtual bool IsActive() OVERRIDE; | 51 virtual bool IsActive() OVERRIDE; |
| 53 virtual bool IsCandidatePopupOpen() const OVERRIDE; | 52 virtual bool IsCandidatePopupOpen() const OVERRIDE; |
| 54 | 53 |
| 55 protected: | 54 protected: |
| 56 // Converts |text| into CompositionText. | 55 // Converts |text| into CompositionText. |
| 57 void ExtractCompositionText(const chromeos::IBusText& text, | 56 void ExtractCompositionText(const chromeos::IBusText& text, |
| 58 uint32 cursor_position, | 57 uint32 cursor_position, |
| 59 CompositionText* out_composition) const; | 58 CompositionText* out_composition) const; |
| 60 | 59 |
| 61 // Process a key returned from the input method. | 60 // Process a key returned from the input method. |
| 62 virtual void ProcessKeyEventPostIME(const base::NativeEvent& native_key_event, | 61 virtual void ProcessKeyEventPostIME(const ui::KeyEvent& event, |
| 63 uint32 ibus_state, | |
| 64 bool handled); | 62 bool handled); |
| 65 | 63 |
| 66 // Converts |native_event| to ibus representation. | |
| 67 virtual void IBusKeyEventFromNativeKeyEvent( | |
| 68 const base::NativeEvent& native_event, | |
| 69 uint32* ibus_keyval, | |
| 70 uint32* ibus_keycode, | |
| 71 uint32* ibus_state); | |
| 72 | |
| 73 // Resets context and abandon all pending results and key events. | 64 // Resets context and abandon all pending results and key events. |
| 74 void ResetContext(); | 65 void ResetContext(); |
| 75 | 66 |
| 76 private: | 67 private: |
| 77 class PendingKeyEvent; | 68 class PendingKeyEvent; |
| 78 | 69 |
| 79 // Overridden from InputMethodBase: | 70 // Overridden from InputMethodBase: |
| 80 virtual void OnWillChangeFocusedClient(TextInputClient* focused_before, | 71 virtual void OnWillChangeFocusedClient(TextInputClient* focused_before, |
| 81 TextInputClient* focused) OVERRIDE; | 72 TextInputClient* focused) OVERRIDE; |
| 82 virtual void OnDidChangeFocusedClient(TextInputClient* focused_before, | 73 virtual void OnDidChangeFocusedClient(TextInputClient* focused_before, |
| 83 TextInputClient* focused) OVERRIDE; | 74 TextInputClient* focused) OVERRIDE; |
| 84 | 75 |
| 85 // Asks the client to confirm current composition text. | 76 // Asks the client to confirm current composition text. |
| 86 void ConfirmCompositionText(); | 77 void ConfirmCompositionText(); |
| 87 | 78 |
| 88 // Checks the availability of focused text input client and update focus | 79 // Checks the availability of focused text input client and update focus |
| 89 // state. | 80 // state. |
| 90 void UpdateContextFocusState(); | 81 void UpdateContextFocusState(); |
| 91 | 82 |
| 92 // Processes a key event that was already filtered by the input method. | 83 // Processes a key event that was already filtered by the input method. |
| 93 // A VKEY_PROCESSKEY may be dispatched to the focused View. | 84 // A VKEY_PROCESSKEY may be dispatched to the focused View. |
| 94 void ProcessFilteredKeyPressEvent(const base::NativeEvent& native_key_event); | 85 void ProcessFilteredKeyPressEvent(const ui::KeyEvent& key_event); |
| 95 | 86 |
| 96 // Processes a key event that was not filtered by the input method. | 87 // Processes a key event that was not filtered by the input method. |
| 97 void ProcessUnfilteredKeyPressEvent(const base::NativeEvent& native_key_event, | 88 void ProcessUnfilteredKeyPressEvent(const ui::KeyEvent& key_event); |
| 98 uint32 ibus_state); | |
| 99 void ProcessUnfilteredFabricatedKeyPressEvent(EventType type, | |
| 100 KeyboardCode key_code, | |
| 101 int event_flags); | |
| 102 | 89 |
| 103 // Sends input method result caused by the given key event to the focused text | 90 // Sends input method result caused by the given key event to the focused text |
| 104 // input client. | 91 // input client. |
| 105 void ProcessInputMethodResult(const base::NativeEvent& native_key_event, | 92 void ProcessInputMethodResult(const ui::KeyEvent& key_event, bool handled); |
| 106 bool filtered); | |
| 107 | 93 |
| 108 // Checks if the pending input method result needs inserting into the focused | 94 // Checks if the pending input method result needs inserting into the focused |
| 109 // text input client as a single character. | 95 // text input client as a single character. |
| 110 bool NeedInsertChar() const; | 96 bool NeedInsertChar() const; |
| 111 | 97 |
| 112 // Checks if there is pending input method result. | 98 // Checks if there is pending input method result. |
| 113 bool HasInputMethodResult() const; | 99 bool HasInputMethodResult() const; |
| 114 | 100 |
| 115 // Abandons all pending key events. It usually happends when we lose keyboard | 101 // Abandons all pending key events. It usually happends when we lose keyboard |
| 116 // focus, the text input type is changed or we are destroyed. | 102 // focus, the text input type is changed or we are destroyed. |
| 117 void AbandonAllPendingKeyEvents(); | 103 void AbandonAllPendingKeyEvents(); |
| 118 | 104 |
| 119 // Passes keyevent and executes character composition if necessary. Returns | 105 // Passes keyevent and executes character composition if necessary. Returns |
| 120 // true if character composer comsumes key event. | 106 // true if character composer comsumes key event. |
| 121 bool ExecuteCharacterComposer(uint32 ibus_keyval, | 107 bool ExecuteCharacterComposer(const ui::KeyEvent& event); |
| 122 uint32 ibus_keycode, | |
| 123 uint32 ibus_state); | |
| 124 | 108 |
| 125 // chromeos::IBusInputContextHandlerInterface overrides: | 109 // chromeos::IBusInputContextHandlerInterface overrides: |
| 126 virtual void CommitText(const std::string& text) OVERRIDE; | 110 virtual void CommitText(const std::string& text) OVERRIDE; |
| 127 virtual void ForwardKeyEvent(uint32 keyval, | 111 virtual void ForwardKeyEvent(uint32 keyval, |
| 128 uint32 keycode, | 112 uint32 keycode, |
| 129 uint32 state) OVERRIDE; | 113 uint32 state) OVERRIDE; |
| 130 virtual void ShowPreeditText() OVERRIDE; | 114 virtual void ShowPreeditText() OVERRIDE; |
| 131 virtual void HidePreeditText() OVERRIDE; | 115 virtual void HidePreeditText() OVERRIDE; |
| 132 virtual void UpdatePreeditText(const chromeos::IBusText& text, | 116 virtual void UpdatePreeditText(const chromeos::IBusText& text, |
| 133 uint32 cursor_pos, | 117 uint32 cursor_pos, |
| 134 bool visible) OVERRIDE; | 118 bool visible) OVERRIDE; |
| 135 virtual void DeleteSurroundingText(int32 offset, uint32 length) OVERRIDE; | 119 virtual void DeleteSurroundingText(int32 offset, uint32 length) OVERRIDE; |
| 136 | 120 |
| 137 void ProcessKeyEventDone(uint32 id, XEvent* xevent, | 121 // Callback function for IBusEngineHandlerInterface::ProcessKeyEvent. |
| 138 uint32 ibus_keyval, uint32 ibus_keycode, | 122 void ProcessKeyEventDone(uint32 id, ui::KeyEvent* key_event, bool is_handled); |
| 139 uint32 ibus_state, bool is_handled); | |
| 140 | 123 |
| 141 // Processes a caret bounds changed event. | 124 // Processes a caret bounds changed event. |
| 142 void OnCaretBoundsChangedInternal(const TextInputClient* client); | 125 void OnCaretBoundsChangedInternal(const TextInputClient* client); |
| 143 | 126 |
| 144 // All pending key events. Note: we do not own these object, we just save | 127 // All pending key events. Note: we do not own these object, we just save |
| 145 // pointers to these object so that we can abandon them when necessary. | 128 // pointers to these object so that we can abandon them when necessary. |
| 146 // They will be deleted in ProcessKeyEventDone(). | 129 // They will be deleted in ProcessKeyEventDone(). |
| 147 std::set<uint32> pending_key_events_; | 130 std::set<uint32> pending_key_events_; |
| 148 | 131 |
| 149 // Pending composition text generated by the current pending key event. | 132 // Pending composition text generated by the current pending key event. |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 | 166 |
| 184 // Used for making callbacks. | 167 // Used for making callbacks. |
| 185 base::WeakPtrFactory<InputMethodIBus> weak_ptr_factory_; | 168 base::WeakPtrFactory<InputMethodIBus> weak_ptr_factory_; |
| 186 | 169 |
| 187 DISALLOW_COPY_AND_ASSIGN(InputMethodIBus); | 170 DISALLOW_COPY_AND_ASSIGN(InputMethodIBus); |
| 188 }; | 171 }; |
| 189 | 172 |
| 190 } // namespace ui | 173 } // namespace ui |
| 191 | 174 |
| 192 #endif // UI_BASE_IME_INPUT_METHOD_IBUS_H_ | 175 #endif // UI_BASE_IME_INPUT_METHOD_IBUS_H_ |
| OLD | NEW |