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 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 return kNoCommand; | 231 return kNoCommand; |
232 } | 232 } |
233 return kNoCommand; | 233 return kNoCommand; |
234 } | 234 } |
235 #endif | 235 #endif |
236 | 236 |
237 } // namespace | 237 } // namespace |
238 | 238 |
239 // static | 239 // static |
240 const char Textfield::kViewClassName[] = "Textfield"; | 240 const char Textfield::kViewClassName[] = "Textfield"; |
| 241 const int Textfield::kTextPadding = 3; |
241 | 242 |
242 // static | 243 // static |
243 size_t Textfield::GetCaretBlinkMs() { | 244 size_t Textfield::GetCaretBlinkMs() { |
244 static const size_t default_value = 500; | 245 static const size_t default_value = 500; |
245 #if defined(OS_WIN) | 246 #if defined(OS_WIN) |
246 static const size_t system_value = ::GetCaretBlinkTime(); | 247 static const size_t system_value = ::GetCaretBlinkTime(); |
247 if (system_value != 0) | 248 if (system_value != 0) |
248 return (system_value == INFINITE) ? 0 : system_value; | 249 return (system_value == INFINITE) ? 0 : system_value; |
249 #endif | 250 #endif |
250 return default_value; | 251 return default_value; |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 focus_painter_ = focus_painter.Pass(); | 544 focus_painter_ = focus_painter.Pass(); |
544 } | 545 } |
545 | 546 |
546 bool Textfield::HasTextBeingDragged() { | 547 bool Textfield::HasTextBeingDragged() { |
547 return initiating_drag_; | 548 return initiating_drag_; |
548 } | 549 } |
549 | 550 |
550 //////////////////////////////////////////////////////////////////////////////// | 551 //////////////////////////////////////////////////////////////////////////////// |
551 // Textfield, View overrides: | 552 // Textfield, View overrides: |
552 | 553 |
| 554 gfx::Insets Textfield::GetInsets() const { |
| 555 gfx::Insets insets = View::GetInsets(); |
| 556 insets += gfx::Insets(kTextPadding, kTextPadding, kTextPadding, kTextPadding); |
| 557 return insets; |
| 558 } |
| 559 |
553 int Textfield::GetBaseline() const { | 560 int Textfield::GetBaseline() const { |
554 return GetInsets().top() + GetRenderText()->GetBaseline(); | 561 return GetInsets().top() + GetRenderText()->GetBaseline(); |
555 } | 562 } |
556 | 563 |
557 gfx::Size Textfield::GetPreferredSize() const { | 564 gfx::Size Textfield::GetPreferredSize() const { |
558 const gfx::Insets& insets = GetInsets(); | 565 const gfx::Insets& insets = GetInsets(); |
559 return gfx::Size(GetFontList().GetExpectedTextWidth(default_width_in_chars_) + | 566 return gfx::Size(GetFontList().GetExpectedTextWidth(default_width_in_chars_) + |
560 insets.width(), GetFontList().GetHeight() + insets.height()); | 567 insets.width(), GetFontList().GetHeight() + insets.height()); |
561 } | 568 } |
562 | 569 |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
912 state->selection_end = range.end(); | 919 state->selection_end = range.end(); |
913 | 920 |
914 if (!read_only()) { | 921 if (!read_only()) { |
915 state->set_value_callback = | 922 state->set_value_callback = |
916 base::Bind(&Textfield::AccessibilitySetValue, | 923 base::Bind(&Textfield::AccessibilitySetValue, |
917 weak_ptr_factory_.GetWeakPtr()); | 924 weak_ptr_factory_.GetWeakPtr()); |
918 } | 925 } |
919 } | 926 } |
920 | 927 |
921 void Textfield::OnBoundsChanged(const gfx::Rect& previous_bounds) { | 928 void Textfield::OnBoundsChanged(const gfx::Rect& previous_bounds) { |
922 GetRenderText()->SetDisplayRect(GetContentsBounds()); | 929 // Textfield insets include a reasonable amount of whitespace on all sides of |
| 930 // the default font list. Fallback fonts with larger heights may paint over |
| 931 // the vertical whitespace as needed. Alternate solutions involve undesirable |
| 932 // behavior like changing the default font size, shrinking some fallback fonts |
| 933 // beyond their legibility, or enlarging controls dynamically with content. |
| 934 gfx::Rect bounds = GetContentsBounds(); |
| 935 // GetContentsBounds() does not actually use the local GetInsets() override. |
| 936 bounds.Inset(gfx::Insets(0, kTextPadding, 0, kTextPadding)); |
| 937 GetRenderText()->SetDisplayRect(bounds); |
923 OnCaretBoundsChanged(); | 938 OnCaretBoundsChanged(); |
924 } | 939 } |
925 | 940 |
926 void Textfield::OnEnabledChanged() { | 941 void Textfield::OnEnabledChanged() { |
927 View::OnEnabledChanged(); | 942 View::OnEnabledChanged(); |
928 if (GetInputMethod()) | 943 if (GetInputMethod()) |
929 GetInputMethod()->OnTextInputTypeChanged(this); | 944 GetInputMethod()->OnTextInputTypeChanged(this); |
930 SchedulePaint(); | 945 SchedulePaint(); |
931 } | 946 } |
932 | 947 |
(...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1792 const size_t length = selection_clipboard_text.length(); | 1807 const size_t length = selection_clipboard_text.length(); |
1793 range = gfx::Range(range.start() + length, range.end() + length); | 1808 range = gfx::Range(range.start() + length, range.end() + length); |
1794 } | 1809 } |
1795 model_->MoveCursorTo(gfx::SelectionModel(range, affinity)); | 1810 model_->MoveCursorTo(gfx::SelectionModel(range, affinity)); |
1796 UpdateAfterChange(true, true); | 1811 UpdateAfterChange(true, true); |
1797 OnAfterUserAction(); | 1812 OnAfterUserAction(); |
1798 } | 1813 } |
1799 } | 1814 } |
1800 | 1815 |
1801 } // namespace views | 1816 } // namespace views |
OLD | NEW |