Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: ui/views/ime/input_method_base.cc

Issue 1177503003: Remove the 2-level input method system & InputMethodBridge. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/views/ime/input_method_base.h ('k') | ui/views/ime/input_method_bridge.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 #include "ui/views/ime/input_method_base.h"
6
7 #include "base/logging.h"
8 #include "ui/base/ime/text_input_client.h"
9 #include "ui/events/event.h"
10 #include "ui/views/view.h"
11 #include "ui/views/widget/widget.h"
12
13 namespace views {
14
15 InputMethodBase::InputMethodBase() : delegate_(NULL), widget_(NULL) {}
16
17 InputMethodBase::~InputMethodBase() {
18 DetachFromWidget();
19 }
20
21 void InputMethodBase::SetDelegate(internal::InputMethodDelegate* delegate) {
22 DCHECK(delegate);
23 delegate_ = delegate;
24 }
25
26 void InputMethodBase::Init(Widget* widget) {
27 DCHECK(widget);
28 DCHECK(widget->GetFocusManager());
29 DCHECK(!widget_) << "The input method is already initialized.";
30
31 widget_ = widget;
32 // Alert the InputMethod of the Widget's currently focused view.
33 View* focused = widget->GetFocusManager()->GetFocusedView();
34 if (focused)
35 OnWillChangeFocus(NULL, focused);
36 widget->GetFocusManager()->AddFocusChangeListener(this);
37 }
38
39 views::View* InputMethodBase::GetFocusedView() const {
40 return widget_ ? widget_->GetFocusManager()->GetFocusedView() : NULL;
41 }
42
43 void InputMethodBase::OnTextInputTypeChanged(View* view) {}
44
45 ui::TextInputClient* InputMethodBase::GetTextInputClient() const {
46 return (widget_ && widget_->IsActive() && GetFocusedView()) ?
47 GetFocusedView()->GetTextInputClient() : NULL;
48 }
49
50 ui::TextInputType InputMethodBase::GetTextInputType() const {
51 ui::TextInputClient* client = GetTextInputClient();
52 return client ? client->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE;
53 }
54
55 void InputMethodBase::OnWillChangeFocus(View* focused_before, View* focused) {}
56
57 void InputMethodBase::OnDidChangeFocus(View* focused_before, View* focused) {}
58
59 bool InputMethodBase::IsViewFocused(View* view) const {
60 return widget_ && widget_->IsActive() && view && GetFocusedView() == view;
61 }
62
63 bool InputMethodBase::IsTextInputTypeNone() const {
64 return GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE;
65 }
66
67 void InputMethodBase::OnInputMethodChanged() const {
68 ui::TextInputClient* client = GetTextInputClient();
69 if (client && client->GetTextInputType() != ui::TEXT_INPUT_TYPE_NONE)
70 client->OnInputMethodChanged();
71 }
72
73 void InputMethodBase::DispatchKeyEventPostIME(const ui::KeyEvent& key) const {
74 if (delegate_)
75 delegate_->DispatchKeyEventPostIME(key);
76 }
77
78 bool InputMethodBase::GetCaretBoundsInWidget(gfx::Rect* rect) const {
79 DCHECK(rect);
80 ui::TextInputClient* client = GetTextInputClient();
81 if (!client || client->GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE)
82 return false;
83
84 gfx::Rect caret_bounds = client->GetCaretBounds();
85 gfx::Point caret_origin = caret_bounds.origin();
86 View::ConvertPointFromScreen(GetFocusedView(), &caret_origin);
87 caret_bounds.set_origin(caret_origin);
88 *rect = GetFocusedView()->ConvertRectToWidget(caret_bounds);
89
90 // Convert coordinates if the focused view is inside a child Widget.
91 if (GetFocusedView()->GetWidget() != widget_)
92 return Widget::ConvertRect(GetFocusedView()->GetWidget(), widget_, rect);
93 return true;
94 }
95
96 void InputMethodBase::DetachFromWidget() {
97 if (!widget_)
98 return;
99
100 widget_->GetFocusManager()->RemoveFocusChangeListener(this);
101 widget_ = NULL;
102 }
103
104 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/ime/input_method_base.h ('k') | ui/views/ime/input_method_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698