Chromium Code Reviews

Unified Diff: views/controls/textfield/native_textfield_views.cc

Issue 5988010: focus reverse traversal was not working for TextfieldViews. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 9 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: views/controls/textfield/native_textfield_views.cc
diff --git a/views/controls/textfield/native_textfield_views.cc b/views/controls/textfield/native_textfield_views.cc
index 56fec92f91a3cc8479285e5765c1da8656344ae3..677ada55632d2dc9aef7ae18002dbc59173ed3fb 100644
--- a/views/controls/textfield/native_textfield_views.cc
+++ b/views/controls/textfield/native_textfield_views.cc
@@ -57,7 +57,6 @@ NativeTextfieldViews::NativeTextfieldViews(Textfield* parent)
insert_(true),
is_cursor_visible_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(cursor_timer_(this)) {
- SetFocusable(true);
set_border(text_border_);
// Multiline is not supported.
@@ -73,7 +72,7 @@ NativeTextfieldViews::~NativeTextfieldViews() {
// NativeTextfieldViews, View overrides:
bool NativeTextfieldViews::OnMousePressed(const views::MouseEvent& e) {
- RequestFocus();
+ textfield_->RequestFocus();
size_t pos = FindCursorPosition(e.location());
if (model_->MoveCursorTo(pos, false)) {
UpdateCursorBoundsAndTextOffset();
@@ -96,50 +95,41 @@ void NativeTextfieldViews::OnMouseReleased(const views::MouseEvent& e,
}
bool NativeTextfieldViews::OnKeyPressed(const views::KeyEvent& e) {
- Textfield::Controller* controller = textfield_->GetController();
- bool handled = false;
- if (controller)
- handled = controller->HandleKeyEvent(textfield_, e);
- return handled || HandleKeyEvent(e);
+ // OnKeyPressed/OnKeyReleased/WillGainFocus/DidGainFocus/WillLoseFocus
+ // will never be invoked on NativeTextfieldViews as it will never
+ // gain focus.
+ NOTREACHED();
+ return false;
}
bool NativeTextfieldViews::OnKeyReleased(const views::KeyEvent& e) {
- return true;
+ NOTREACHED();
+ return false;
}
void NativeTextfieldViews::Paint(gfx::Canvas* canvas) {
- text_border_->set_has_focus(HasFocus());
+ text_border_->set_has_focus(textfield_->HasFocus());
PaintBackground(canvas);
PaintTextAndCursor(canvas);
if (textfield_->draw_border())
PaintBorder(canvas);
}
+void NativeTextfieldViews::DidChangeBounds(const gfx::Rect& previous,
+ const gfx::Rect& current) {
+ UpdateCursorBoundsAndTextOffset();
+}
+
void NativeTextfieldViews::WillGainFocus() {
+ NOTREACHED();
}
void NativeTextfieldViews::DidGainFocus() {
- is_cursor_visible_ = true;
- SchedulePaint();
- // Start blinking cursor.
- MessageLoop::current()->PostDelayedTask(
- FROM_HERE,
- cursor_timer_.NewRunnableMethod(&NativeTextfieldViews::UpdateCursor),
- kCursorVisibleTimeMs);
+ NOTREACHED();
}
void NativeTextfieldViews::WillLoseFocus() {
- // Stop blinking cursor.
- cursor_timer_.RevokeAll();
- if (is_cursor_visible_) {
- is_cursor_visible_ = false;
- RepaintCursor();
- }
-}
-
-void NativeTextfieldViews::DidChangeBounds(const gfx::Rect& previous,
- const gfx::Rect& current) {
- UpdateCursorBoundsAndTextOffset();
+ NOTREACHED();
}
/////////////////////////////////////////////////////////////////
@@ -223,15 +213,10 @@ void NativeTextfieldViews::UpdateIsPassword() {
}
void NativeTextfieldViews::UpdateEnabled() {
+ SetEnabled(textfield_->IsEnabled());
SchedulePaint();
}
-bool NativeTextfieldViews::IsPassword() {
- // looks unnecessary. should we remove?
- NOTREACHED();
- return false;
-}
-
gfx::Insets NativeTextfieldViews::CalculateInsets() {
return GetInsets();
}
@@ -256,8 +241,8 @@ void NativeTextfieldViews::UpdateVerticalMargins() {
UpdateCursorBoundsAndTextOffset();
}
-void NativeTextfieldViews::SetFocus() {
- RequestFocus();
+bool NativeTextfieldViews::SetFocus() {
+ return false;
}
View* NativeTextfieldViews::GetView() {
@@ -273,6 +258,41 @@ bool NativeTextfieldViews::IsIMEComposing() const {
return false;
}
+bool NativeTextfieldViews::HandleKeyPressed(const views::KeyEvent& e) {
+ Textfield::Controller* controller = textfield_->GetController();
+ bool handled = false;
+ if (controller) {
+ handled = controller->HandleKeyEvent(textfield_, e);
+ }
+ return handled || HandleKeyEvent(e);
+}
+
+bool NativeTextfieldViews::HandleKeyReleased(const views::KeyEvent& e) {
+ return true;
+}
+
+void NativeTextfieldViews::HandleWillGainFocus() {
+}
+
+void NativeTextfieldViews::HandleDidGainFocus() {
+ is_cursor_visible_ = true;
+ SchedulePaint();
+ // Start blinking cursor.
+ MessageLoop::current()->PostDelayedTask(
+ FROM_HERE,
+ cursor_timer_.NewRunnableMethod(&NativeTextfieldViews::UpdateCursor),
+ kCursorVisibleTimeMs);
+}
+
+void NativeTextfieldViews::HandleWillLoseFocus() {
+ // Stop blinking cursor.
+ cursor_timer_.RevokeAll();
+ if (is_cursor_visible_) {
+ is_cursor_visible_ = false;
+ RepaintCursor();
+ }
+}
+
// static
bool NativeTextfieldViews::IsTextfieldViewsEnabled() {
#if defined(TOUCH_UI)
@@ -368,7 +388,8 @@ void NativeTextfieldViews::PaintTextAndCursor(gfx::Canvas* canvas) {
int y = insets.top();
int text_height = height() - insets.height();
SkColor selection_color =
- HasFocus() ? kFocusedSelectionColor : kUnfocusedSelectionColor;
+ textfield_->HasFocus() ?
+ kFocusedSelectionColor : kUnfocusedSelectionColor;
SkColor text_color =
textfield_->read_only() ? kReadonlyTextColor : GetTextColor();
« no previous file with comments | « views/controls/textfield/native_textfield_views.h ('k') | views/controls/textfield/native_textfield_views_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine