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

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

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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 bool InputMethodBase::IsMock() const {
56 return false;
57 }
58
59 void InputMethodBase::OnWillChangeFocus(View* focused_before, View* focused) {}
60
61 void InputMethodBase::OnDidChangeFocus(View* focused_before, View* focused) {}
62
63 bool InputMethodBase::IsViewFocused(View* view) const {
64 return widget_ && widget_->IsActive() && view && GetFocusedView() == view;
65 }
66
67 bool InputMethodBase::IsTextInputTypeNone() const {
68 return GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE;
69 }
70
71 void InputMethodBase::OnInputMethodChanged() const {
72 ui::TextInputClient* client = GetTextInputClient();
73 if (client && client->GetTextInputType() != ui::TEXT_INPUT_TYPE_NONE)
74 client->OnInputMethodChanged();
75 }
76
77 void InputMethodBase::DispatchKeyEventPostIME(const ui::KeyEvent& key) const {
78 if (delegate_)
79 delegate_->DispatchKeyEventPostIME(key);
80 }
81
82 bool InputMethodBase::GetCaretBoundsInWidget(gfx::Rect* rect) const {
83 DCHECK(rect);
84 ui::TextInputClient* client = GetTextInputClient();
85 if (!client || client->GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE)
86 return false;
87
88 gfx::Rect caret_bounds = client->GetCaretBounds();
89 gfx::Point caret_origin = caret_bounds.origin();
90 View::ConvertPointFromScreen(GetFocusedView(), &caret_origin);
91 caret_bounds.set_origin(caret_origin);
92 *rect = GetFocusedView()->ConvertRectToWidget(caret_bounds);
93
94 // Convert coordinates if the focused view is inside a child Widget.
95 if (GetFocusedView()->GetWidget() != widget_)
96 return Widget::ConvertRect(GetFocusedView()->GetWidget(), widget_, rect);
97 return true;
98 }
99
100 void InputMethodBase::DetachFromWidget() {
101 if (!widget_)
102 return;
103
104 widget_->GetFocusManager()->RemoveFocusChangeListener(this);
105 widget_ = NULL;
106 }
107
108 } // 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