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/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 | 263 |
264 bool Textfield::GetCursorEnabled() const { | 264 bool Textfield::GetCursorEnabled() const { |
265 return native_wrapper_ && native_wrapper_->GetCursorEnabled(); | 265 return native_wrapper_ && native_wrapper_->GetCursorEnabled(); |
266 } | 266 } |
267 | 267 |
268 void Textfield::SetCursorEnabled(bool enabled) { | 268 void Textfield::SetCursorEnabled(bool enabled) { |
269 if (native_wrapper_) | 269 if (native_wrapper_) |
270 native_wrapper_->SetCursorEnabled(enabled); | 270 native_wrapper_->SetCursorEnabled(enabled); |
271 } | 271 } |
272 | 272 |
273 void Textfield::SetFont(const gfx::Font& font) { | 273 void Textfield::SetFontList(const gfx::FontList& font_list) { |
274 font_ = font; | 274 font_list_ = font_list; |
275 if (native_wrapper_) | 275 if (native_wrapper_) |
276 native_wrapper_->UpdateFont(); | 276 native_wrapper_->UpdateFont(); |
277 PreferredSizeChanged(); | 277 PreferredSizeChanged(); |
278 } | 278 } |
279 | 279 |
| 280 const gfx::Font& Textfield::GetPrimaryFont() const { |
| 281 return font_list_.GetPrimaryFont(); |
| 282 } |
| 283 |
| 284 void Textfield::SetFont(const gfx::Font& font) { |
| 285 SetFontList(gfx::FontList(font)); |
| 286 } |
| 287 |
280 void Textfield::SetHorizontalMargins(int left, int right) { | 288 void Textfield::SetHorizontalMargins(int left, int right) { |
281 margins_.Set(margins_.top(), left, margins_.bottom(), right); | 289 margins_.Set(margins_.top(), left, margins_.bottom(), right); |
282 horizontal_margins_were_set_ = true; | 290 horizontal_margins_were_set_ = true; |
283 if (native_wrapper_) | 291 if (native_wrapper_) |
284 native_wrapper_->UpdateHorizontalMargins(); | 292 native_wrapper_->UpdateHorizontalMargins(); |
285 PreferredSizeChanged(); | 293 PreferredSizeChanged(); |
286 } | 294 } |
287 | 295 |
288 void Textfield::SetVerticalMargins(int top, int bottom) { | 296 void Textfield::SetVerticalMargins(int top, int bottom) { |
289 margins_.Set(top, margins_.left(), bottom, margins_.right()); | 297 margins_.Set(top, margins_.left(), bottom, margins_.right()); |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 void Textfield::Layout() { | 425 void Textfield::Layout() { |
418 if (native_wrapper_) { | 426 if (native_wrapper_) { |
419 native_wrapper_->GetView()->SetBoundsRect(GetContentsBounds()); | 427 native_wrapper_->GetView()->SetBoundsRect(GetContentsBounds()); |
420 native_wrapper_->GetView()->Layout(); | 428 native_wrapper_->GetView()->Layout(); |
421 } | 429 } |
422 } | 430 } |
423 | 431 |
424 int Textfield::GetBaseline() const { | 432 int Textfield::GetBaseline() const { |
425 gfx::Insets insets = GetTextInsets(); | 433 gfx::Insets insets = GetTextInsets(); |
426 const int baseline = native_wrapper_ ? | 434 const int baseline = native_wrapper_ ? |
427 native_wrapper_->GetTextfieldBaseline() : font_.GetBaseline(); | 435 native_wrapper_->GetTextfieldBaseline() : font_list_.GetBaseline(); |
428 return insets.top() + baseline; | 436 return insets.top() + baseline; |
429 } | 437 } |
430 | 438 |
431 gfx::Size Textfield::GetPreferredSize() { | 439 gfx::Size Textfield::GetPreferredSize() { |
432 gfx::Insets insets = GetTextInsets(); | 440 gfx::Insets insets = GetTextInsets(); |
433 | 441 |
434 // For NativeTextfieldViews, we might use a pre-defined font list (defined in | |
435 // IDS_UI_FONT_FAMILY_CROS) as the fonts to render text. The fonts in the | |
436 // list might be different (in name or in size) from |font_|, so we need to | |
437 // use GetFontHeight() to get the height of the first font in the list to | |
438 // guide textfield's height. | |
439 const int font_height = native_wrapper_ ? native_wrapper_->GetFontHeight() : | 442 const int font_height = native_wrapper_ ? native_wrapper_->GetFontHeight() : |
440 font_.GetHeight(); | 443 font_list_.GetHeight(); |
441 return gfx::Size(font_.GetExpectedTextWidth(default_width_in_chars_) + | 444 return gfx::Size( |
442 insets.width(), font_height + insets.height()); | 445 GetPrimaryFont().GetExpectedTextWidth(default_width_in_chars_) |
| 446 + insets.width(), |
| 447 font_height + insets.height()); |
443 } | 448 } |
444 | 449 |
445 void Textfield::AboutToRequestFocusFromTabTraversal(bool reverse) { | 450 void Textfield::AboutToRequestFocusFromTabTraversal(bool reverse) { |
446 SelectAll(false); | 451 SelectAll(false); |
447 } | 452 } |
448 | 453 |
449 bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) { | 454 bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) { |
450 // Skip any accelerator handling of backspace; textfields handle this key. | 455 // Skip any accelerator handling of backspace; textfields handle this key. |
451 // Also skip processing of [Alt]+<num-pad digit> Unicode alt key codes. | 456 // Also skip processing of [Alt]+<num-pad digit> Unicode alt key codes. |
452 return e.key_code() == ui::VKEY_BACK || e.IsUnicodeKeyCode(); | 457 return e.key_code() == ui::VKEY_BACK || e.IsUnicodeKeyCode(); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 NativeTextfieldWrapper* NativeTextfieldWrapper::CreateWrapper( | 561 NativeTextfieldWrapper* NativeTextfieldWrapper::CreateWrapper( |
557 Textfield* field) { | 562 Textfield* field) { |
558 #if defined(OS_WIN) && !defined(USE_AURA) | 563 #if defined(OS_WIN) && !defined(USE_AURA) |
559 if (!Textfield::IsViewsTextfieldEnabled()) | 564 if (!Textfield::IsViewsTextfieldEnabled()) |
560 return new NativeTextfieldWin(field); | 565 return new NativeTextfieldWin(field); |
561 #endif | 566 #endif |
562 return new NativeTextfieldViews(field); | 567 return new NativeTextfieldViews(field); |
563 } | 568 } |
564 | 569 |
565 } // namespace views | 570 } // namespace views |
OLD | NEW |