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

Side by Side Diff: ui/views/controls/label.cc

Issue 1036233005: Allow views::Label subclasses create RenderText (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move implementation to match Created 5 years, 8 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/controls/label.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/label.h" 5 #include "ui/views/controls/label.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <vector> 10 #include <vector>
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 return true; 320 return true;
321 } 321 }
322 322
323 return false; 323 return false;
324 } 324 }
325 325
326 void Label::OnEnabledChanged() { 326 void Label::OnEnabledChanged() {
327 RecalculateColors(); 327 RecalculateColors();
328 } 328 }
329 329
330 scoped_ptr<gfx::RenderText> Label::CreateRenderText(
331 const base::string16& text,
332 gfx::HorizontalAlignment alignment,
333 gfx::DirectionalityMode directionality,
334 gfx::ElideBehavior elide_behavior) {
335 scoped_ptr<gfx::RenderText> render_text(
336 render_text_->CreateInstanceOfSameType());
337 render_text->SetHorizontalAlignment(alignment);
338 render_text->SetDirectionalityMode(directionality);
339 render_text->SetElideBehavior(elide_behavior);
340 render_text->SetObscured(obscured());
341 render_text->SetMinLineHeight(line_height());
342 render_text->SetFontList(font_list());
343 render_text->set_shadows(shadows());
344 render_text->SetCursorEnabled(false);
345 render_text->SetText(text);
346 return render_text.Pass();
347 }
348
330 void Label::PaintText(gfx::Canvas* canvas) { 349 void Label::PaintText(gfx::Canvas* canvas) {
331 MaybeBuildRenderTextLines(); 350 MaybeBuildRenderTextLines();
332 for (size_t i = 0; i < lines_.size(); ++i) 351 for (size_t i = 0; i < lines_.size(); ++i)
333 lines_[i]->Draw(canvas); 352 lines_[i]->Draw(canvas);
334 } 353 }
335 354
336 void Label::OnBoundsChanged(const gfx::Rect& previous_bounds) { 355 void Label::OnBoundsChanged(const gfx::Rect& previous_bounds) {
337 if (previous_bounds.size() != size()) 356 if (previous_bounds.size() != size())
338 InvalidateLayout(); 357 InvalidateLayout();
339 } 358 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 SetText(text); 418 SetText(text);
400 } 419 }
401 420
402 void Label::ResetLayout() { 421 void Label::ResetLayout() {
403 InvalidateLayout(); 422 InvalidateLayout();
404 PreferredSizeChanged(); 423 PreferredSizeChanged();
405 SchedulePaint(); 424 SchedulePaint();
406 lines_.clear(); 425 lines_.clear();
407 } 426 }
408 427
409 scoped_ptr<gfx::RenderText> Label::CreateRenderText(
410 const base::string16& text,
411 gfx::HorizontalAlignment alignment,
412 gfx::DirectionalityMode directionality,
413 gfx::ElideBehavior elide_behavior) {
414 scoped_ptr<gfx::RenderText> render_text(
415 render_text_->CreateInstanceOfSameType());
416 render_text->SetHorizontalAlignment(alignment);
417 render_text->SetDirectionalityMode(directionality);
418 render_text->SetElideBehavior(elide_behavior);
419 render_text->SetObscured(obscured());
420 render_text->SetMinLineHeight(line_height());
421 render_text->SetFontList(font_list());
422 render_text->set_shadows(shadows());
423 render_text->SetCursorEnabled(false);
424 render_text->SetText(text);
425 return render_text.Pass();
426 }
427
428 void Label::MaybeBuildRenderTextLines() { 428 void Label::MaybeBuildRenderTextLines() {
429 if (!lines_.empty()) 429 if (!lines_.empty())
430 return; 430 return;
431 431
432 gfx::Rect rect = GetContentsBounds(); 432 gfx::Rect rect = GetContentsBounds();
433 if (focusable()) 433 if (focusable())
434 rect.Inset(kFocusBorderPadding, kFocusBorderPadding); 434 rect.Inset(kFocusBorderPadding, kFocusBorderPadding);
435 if (rect.IsEmpty()) 435 if (rect.IsEmpty())
436 return; 436 return;
437 437
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 } 581 }
582 582
583 bool Label::ShouldShowDefaultTooltip() const { 583 bool Label::ShouldShowDefaultTooltip() const {
584 const gfx::Size text_size = GetTextSize(); 584 const gfx::Size text_size = GetTextSize();
585 const gfx::Size size = GetContentsBounds().size(); 585 const gfx::Size size = GetContentsBounds().size();
586 return !obscured() && (text_size.width() > size.width() || 586 return !obscured() && (text_size.width() > size.width() ||
587 (multi_line() && text_size.height() > size.height())); 587 (multi_line() && text_size.height() > size.height()));
588 } 588 }
589 589
590 } // namespace views 590 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/label.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698