| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef UI_VIEWS_IME_INPUT_METHOD_BRIDGE_H_ | |
| 6 #define UI_VIEWS_IME_INPUT_METHOD_BRIDGE_H_ | |
| 7 | |
| 8 #include <string> | |
| 9 | |
| 10 #include "base/basictypes.h" | |
| 11 #include "base/compiler_specific.h" | |
| 12 #include "ui/base/ime/text_input_client.h" | |
| 13 #include "ui/gfx/rect.h" | |
| 14 #include "ui/views/ime/input_method_base.h" | |
| 15 | |
| 16 namespace ui { | |
| 17 class InputMethod; | |
| 18 } // namespace ui | |
| 19 | |
| 20 namespace views { | |
| 21 | |
| 22 class View; | |
| 23 | |
| 24 // A "bridge" InputMethod implementation for views top-level widgets, which just | |
| 25 // sends/receives IME related events to/from a system-wide ui::InputMethod | |
| 26 // object. | |
| 27 class InputMethodBridge : public InputMethodBase, | |
| 28 public ui::TextInputClient { | |
| 29 public: | |
| 30 // |shared_input_method| indicates if |host| is shared among other top level | |
| 31 // widgets. | |
| 32 InputMethodBridge(internal::InputMethodDelegate* delegate, | |
| 33 ui::InputMethod* host, | |
| 34 bool shared_input_method); | |
| 35 virtual ~InputMethodBridge(); | |
| 36 | |
| 37 // Overridden from InputMethod: | |
| 38 virtual void OnFocus() override; | |
| 39 virtual void OnBlur() override; | |
| 40 virtual bool OnUntranslatedIMEMessage(const base::NativeEvent& event, | |
| 41 NativeEventResult* result) override; | |
| 42 virtual void DispatchKeyEvent(const ui::KeyEvent& key) override; | |
| 43 virtual void OnTextInputTypeChanged(View* view) override; | |
| 44 virtual void OnCaretBoundsChanged(View* view) override; | |
| 45 virtual void CancelComposition(View* view) override; | |
| 46 virtual void OnInputLocaleChanged() override; | |
| 47 virtual std::string GetInputLocale() override; | |
| 48 virtual bool IsActive() override; | |
| 49 virtual bool IsCandidatePopupOpen() const override; | |
| 50 virtual void ShowImeIfNeeded() override; | |
| 51 | |
| 52 // Overridden from TextInputClient: | |
| 53 virtual void SetCompositionText( | |
| 54 const ui::CompositionText& composition) override; | |
| 55 virtual void ConfirmCompositionText() override; | |
| 56 virtual void ClearCompositionText() override; | |
| 57 virtual void InsertText(const base::string16& text) override; | |
| 58 virtual void InsertChar(base::char16 ch, int flags) override; | |
| 59 virtual gfx::NativeWindow GetAttachedWindow() const override; | |
| 60 virtual ui::TextInputType GetTextInputType() const override; | |
| 61 virtual ui::TextInputMode GetTextInputMode() const override; | |
| 62 virtual bool CanComposeInline() const override; | |
| 63 virtual gfx::Rect GetCaretBounds() const override; | |
| 64 virtual bool GetCompositionCharacterBounds(uint32 index, | |
| 65 gfx::Rect* rect) const override; | |
| 66 virtual bool HasCompositionText() const override; | |
| 67 virtual bool GetTextRange(gfx::Range* range) const override; | |
| 68 virtual bool GetCompositionTextRange(gfx::Range* range) const override; | |
| 69 virtual bool GetSelectionRange(gfx::Range* range) const override; | |
| 70 virtual bool SetSelectionRange(const gfx::Range& range) override; | |
| 71 virtual bool DeleteRange(const gfx::Range& range) override; | |
| 72 virtual bool GetTextFromRange(const gfx::Range& range, | |
| 73 base::string16* text) const override; | |
| 74 virtual void OnInputMethodChanged() override; | |
| 75 virtual bool ChangeTextDirectionAndLayoutAlignment( | |
| 76 base::i18n::TextDirection direction) override; | |
| 77 virtual void ExtendSelectionAndDelete(size_t before, size_t after) override; | |
| 78 virtual void EnsureCaretInRect(const gfx::Rect& rect) override; | |
| 79 virtual void OnCandidateWindowShown() override; | |
| 80 virtual void OnCandidateWindowUpdated() override; | |
| 81 virtual void OnCandidateWindowHidden() override; | |
| 82 virtual bool IsEditingCommandEnabled(int command_id) override; | |
| 83 virtual void ExecuteEditingCommand(int command_id) override; | |
| 84 | |
| 85 // Overridden from FocusChangeListener. | |
| 86 virtual void OnWillChangeFocus(View* focused_before, View* focused) override; | |
| 87 virtual void OnDidChangeFocus(View* focused_before, View* focused) override; | |
| 88 | |
| 89 ui::InputMethod* GetHostInputMethod() const; | |
| 90 | |
| 91 private: | |
| 92 class HostObserver; | |
| 93 | |
| 94 void UpdateViewFocusState(); | |
| 95 | |
| 96 ui::InputMethod* host_; | |
| 97 | |
| 98 // An observer observing the host input method for cases that the host input | |
| 99 // method is destroyed before this bridge input method. | |
| 100 scoped_ptr<HostObserver> host_observer_; | |
| 101 | |
| 102 const bool shared_input_method_; | |
| 103 | |
| 104 DISALLOW_COPY_AND_ASSIGN(InputMethodBridge); | |
| 105 }; | |
| 106 | |
| 107 } // namespace views | |
| 108 | |
| 109 #endif // UI_VIEWS_IME_INPUT_METHOD_BRIDGE_H_ | |
| OLD | NEW |