Chromium Code Reviews| 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 #include "ui/views/controls/textfield/textfield.h" | 5 #include "ui/views/controls/textfield/textfield.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "ui/accessibility/ax_view_state.h" | 10 #include "ui/accessibility/ax_view_state.h" |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 269 skip_input_method_cancel_composition_(false), | 269 skip_input_method_cancel_composition_(false), |
| 270 cursor_visible_(false), | 270 cursor_visible_(false), |
| 271 drop_cursor_visible_(false), | 271 drop_cursor_visible_(false), |
| 272 initiating_drag_(false), | 272 initiating_drag_(false), |
| 273 aggregated_clicks_(0), | 273 aggregated_clicks_(0), |
| 274 drag_start_display_offset_(0), | 274 drag_start_display_offset_(0), |
| 275 touch_handles_hidden_due_to_scroll_(false), | 275 touch_handles_hidden_due_to_scroll_(false), |
| 276 weak_ptr_factory_(this) { | 276 weak_ptr_factory_(this) { |
| 277 set_context_menu_controller(this); | 277 set_context_menu_controller(this); |
| 278 set_drag_controller(this); | 278 set_drag_controller(this); |
| 279 SetBorder(scoped_ptr<Border>(new FocusableBorder())); | |
| 280 SetFocusable(true); | 279 SetFocusable(true); |
| 281 | 280 |
| 281 // Use most of the FocusableBorder's internal padding for text rendering. | |
|
Peter Kasting
2014/08/28 21:15:37
Why not just make FocusableBorder thinner?
msw
2014/08/28 21:29:14
That would be a good next step to give Combobox an
| |
| 282 scoped_ptr<FocusableBorder> border(new FocusableBorder()); | |
| 283 const int kVerticalInset = border->GetMinimumSize().height() / 2; | |
| 284 const gfx::Insets insets(border->GetInsets()); | |
| 285 border->SetInsets(kVerticalInset, insets.left(), | |
| 286 kVerticalInset, insets.right()); | |
| 287 SetBorder(border.PassAs<Border>()); | |
| 288 internal_padding_ = gfx::Insets(insets.top() - kVerticalInset, 0, | |
| 289 insets.bottom() - kVerticalInset, 0); | |
| 290 | |
| 282 if (ViewsDelegate::views_delegate) { | 291 if (ViewsDelegate::views_delegate) { |
| 283 password_reveal_duration_ = ViewsDelegate::views_delegate-> | 292 password_reveal_duration_ = ViewsDelegate::views_delegate-> |
| 284 GetDefaultTextfieldObscuredRevealDuration(); | 293 GetDefaultTextfieldObscuredRevealDuration(); |
| 285 } | 294 } |
| 286 } | 295 } |
| 287 | 296 |
| 288 Textfield::~Textfield() {} | 297 Textfield::~Textfield() {} |
| 289 | 298 |
| 290 void Textfield::SetReadOnly(bool read_only) { | 299 void Textfield::SetReadOnly(bool read_only) { |
| 291 // Update read-only without changing the focusable state (or active, etc.). | 300 // Update read-only without changing the focusable state (or active, etc.). |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 548 } | 557 } |
| 549 | 558 |
| 550 //////////////////////////////////////////////////////////////////////////////// | 559 //////////////////////////////////////////////////////////////////////////////// |
| 551 // Textfield, View overrides: | 560 // Textfield, View overrides: |
| 552 | 561 |
| 553 int Textfield::GetBaseline() const { | 562 int Textfield::GetBaseline() const { |
| 554 return GetInsets().top() + GetRenderText()->GetBaseline(); | 563 return GetInsets().top() + GetRenderText()->GetBaseline(); |
| 555 } | 564 } |
| 556 | 565 |
| 557 gfx::Size Textfield::GetPreferredSize() const { | 566 gfx::Size Textfield::GetPreferredSize() const { |
| 558 const gfx::Insets& insets = GetInsets(); | 567 gfx::Insets insets = GetInsets(); |
| 568 insets += internal_padding_; | |
| 559 return gfx::Size(GetFontList().GetExpectedTextWidth(default_width_in_chars_) + | 569 return gfx::Size(GetFontList().GetExpectedTextWidth(default_width_in_chars_) + |
| 560 insets.width(), GetFontList().GetHeight() + insets.height()); | 570 insets.width(), GetFontList().GetHeight() + insets.height()); |
| 561 } | 571 } |
| 562 | 572 |
| 573 void Textfield::SetBorder(scoped_ptr<Border> b) { | |
| 574 // Clear the default internal padding if a custom border is used. | |
| 575 internal_padding_ = gfx::Insets(); | |
| 576 View::SetBorder(b.Pass()); | |
| 577 } | |
| 578 | |
| 563 const char* Textfield::GetClassName() const { | 579 const char* Textfield::GetClassName() const { |
| 564 return kViewClassName; | 580 return kViewClassName; |
| 565 } | 581 } |
| 566 | 582 |
| 567 gfx::NativeCursor Textfield::GetCursor(const ui::MouseEvent& event) { | 583 gfx::NativeCursor Textfield::GetCursor(const ui::MouseEvent& event) { |
| 568 bool in_selection = GetRenderText()->IsPointInSelection(event.location()); | 584 bool in_selection = GetRenderText()->IsPointInSelection(event.location()); |
| 569 bool drag_event = event.type() == ui::ET_MOUSE_DRAGGED; | 585 bool drag_event = event.type() == ui::ET_MOUSE_DRAGGED; |
| 570 bool text_cursor = !initiating_drag_ && (drag_event || !in_selection); | 586 bool text_cursor = !initiating_drag_ && (drag_event || !in_selection); |
| 571 return text_cursor ? GetNativeIBeamCursor() : gfx::kNullCursor; | 587 return text_cursor ? GetNativeIBeamCursor() : gfx::kNullCursor; |
| 572 } | 588 } |
| (...skipping 1219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1792 const size_t length = selection_clipboard_text.length(); | 1808 const size_t length = selection_clipboard_text.length(); |
| 1793 range = gfx::Range(range.start() + length, range.end() + length); | 1809 range = gfx::Range(range.start() + length, range.end() + length); |
| 1794 } | 1810 } |
| 1795 model_->MoveCursorTo(gfx::SelectionModel(range, affinity)); | 1811 model_->MoveCursorTo(gfx::SelectionModel(range, affinity)); |
| 1796 UpdateAfterChange(true, true); | 1812 UpdateAfterChange(true, true); |
| 1797 OnAfterUserAction(); | 1813 OnAfterUserAction(); |
| 1798 } | 1814 } |
| 1799 } | 1815 } |
| 1800 | 1816 |
| 1801 } // namespace views | 1817 } // namespace views |
| OLD | NEW |