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

Side by Side Diff: ui/views/controls/button/label_button.cc

Issue 872113004: Modified OverviewMode's LabelButton bounds to cover the entire item. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed unnecessary changes from unittests Created 5 years, 10 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
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/button/label_button.h" 5 #include "ui/views/controls/button/label_button.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "ui/gfx/animation/throb_animation.h" 9 #include "ui/gfx/animation/throb_animation.h"
10 #include "ui/gfx/canvas.h" 10 #include "ui/gfx/canvas.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 image_(new ImageView()), 63 image_(new ImageView()),
64 label_(new Label()), 64 label_(new Label()),
65 cached_normal_font_list_(GetDefaultNormalFontList()), 65 cached_normal_font_list_(GetDefaultNormalFontList()),
66 cached_bold_font_list_(GetDefaultBoldFontList()), 66 cached_bold_font_list_(GetDefaultBoldFontList()),
67 button_state_images_(), 67 button_state_images_(),
68 button_state_colors_(), 68 button_state_colors_(),
69 explicitly_set_colors_(), 69 explicitly_set_colors_(),
70 is_default_(false), 70 is_default_(false),
71 style_(STYLE_TEXTBUTTON), 71 style_(STYLE_TEXTBUTTON),
72 border_is_themed_border_(true), 72 border_is_themed_border_(true),
73 image_label_spacing_(kSpacing) { 73 image_label_spacing_(kSpacing),
74 ignore_vertical_overlap_(true) {
74 SetAnimationDuration(kHoverAnimationDurationMs); 75 SetAnimationDuration(kHoverAnimationDurationMs);
75 SetText(text); 76 SetText(text);
76 77
77 AddChildView(image_); 78 AddChildView(image_);
78 image_->set_interactive(false); 79 image_->set_interactive(false);
79 80
80 AddChildView(label_); 81 AddChildView(label_);
81 label_->SetFontList(cached_normal_font_list_); 82 label_->SetFontList(cached_normal_font_list_);
82 label_->SetAutoColorReadabilityEnabled(false); 83 label_->SetAutoColorReadabilityEnabled(false);
83 label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 84 label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 gfx::Rect child_area(GetChildAreaBounds()); 291 gfx::Rect child_area(GetChildAreaBounds());
291 child_area.Inset(GetInsets()); 292 child_area.Inset(GetInsets());
292 293
293 gfx::Size image_size(image_->GetPreferredSize()); 294 gfx::Size image_size(image_->GetPreferredSize());
294 image_size.SetToMin(child_area.size()); 295 image_size.SetToMin(child_area.size());
295 296
296 // The label takes any remaining width after sizing the image, unless both 297 // The label takes any remaining width after sizing the image, unless both
297 // views are centered. In that case, using the tighter preferred label width 298 // views are centered. In that case, using the tighter preferred label width
298 // avoids wasted space within the label that would look like awkward padding. 299 // avoids wasted space within the label that would look like awkward padding.
299 // Labels can paint over the full button height, including the border height. 300 // Labels can paint over the full button height, including the border height.
300 gfx::Size label_size(child_area.width(), height()); 301 gfx::Size label_size(child_area.width(), ignore_vertical_overlap_
302 ? height()
303 : child_area.height());
301 if (!image_size.IsEmpty() && !label_size.IsEmpty()) { 304 if (!image_size.IsEmpty() && !label_size.IsEmpty()) {
302 label_size.set_width(std::max(child_area.width() - 305 label_size.set_width(std::max(child_area.width() -
303 image_size.width() - image_label_spacing_, 0)); 306 image_size.width() - image_label_spacing_, 0));
304 if (adjusted_alignment == gfx::ALIGN_CENTER) { 307 if (adjusted_alignment == gfx::ALIGN_CENTER) {
305 // Ensure multi-line labels paired with images use their available width. 308 // Ensure multi-line labels paired with images use their available width.
306 label_size.set_width( 309 label_size.set_width(
307 std::min(label_size.width(), label_->GetPreferredSize().width())); 310 std::min(label_size.width(), label_->GetPreferredSize().width()));
308 } 311 }
309 } 312 }
310 313
311 gfx::Point image_origin(child_area.origin()); 314 gfx::Point image_origin(child_area.origin());
312 image_origin.Offset(0, (child_area.height() - image_size.height()) / 2); 315 image_origin.Offset(0, (child_area.height() - image_size.height()) / 2);
313 if (adjusted_alignment == gfx::ALIGN_CENTER) { 316 if (adjusted_alignment == gfx::ALIGN_CENTER) {
314 const int spacing = (image_size.width() > 0 && label_size.width() > 0) ? 317 const int spacing = (image_size.width() > 0 && label_size.width() > 0) ?
315 image_label_spacing_ : 0; 318 image_label_spacing_ : 0;
316 const int total_width = image_size.width() + label_size.width() + 319 const int total_width = image_size.width() + label_size.width() +
317 spacing; 320 spacing;
318 image_origin.Offset((child_area.width() - total_width) / 2, 0); 321 image_origin.Offset((child_area.width() - total_width) / 2, 0);
319 } else if (adjusted_alignment == gfx::ALIGN_RIGHT) { 322 } else if (adjusted_alignment == gfx::ALIGN_RIGHT) {
320 image_origin.Offset(child_area.width() - image_size.width(), 0); 323 image_origin.Offset(child_area.width() - image_size.width(), 0);
321 } 324 }
322 325
323 gfx::Point label_origin(child_area.x(), 0); 326 gfx::Point label_origin(child_area.x(),
327 ignore_vertical_overlap_ ? 0 : child_area.y());
flackr 2015/01/30 15:34:04 Out of curiosity, can you tell from the git histor
Nina 2015/01/30 15:44:32 It's required by the bookmark bar: https://coderev
sky 2015/02/03 21:40:02 This seems suspicious to me. If BookmarkBar wants
msw 2015/02/03 23:50:19 Ignoring the vertical insets for text rendering wa
Nina 2015/02/04 16:20:11 Acknowledged.
flackr 2015/02/04 16:39:08 So it sounds like if we ignore borders for the pur
324 if (!image_size.IsEmpty() && adjusted_alignment != gfx::ALIGN_RIGHT) { 328 if (!image_size.IsEmpty() && adjusted_alignment != gfx::ALIGN_RIGHT) {
325 label_origin.set_x(image_origin.x() + image_size.width() + 329 label_origin.set_x(image_origin.x() + image_size.width() +
326 image_label_spacing_); 330 image_label_spacing_);
327 } 331 }
328 332
329 image_->SetBoundsRect(gfx::Rect(image_origin, image_size)); 333 image_->SetBoundsRect(gfx::Rect(image_origin, image_size));
330 label_->SetBoundsRect(gfx::Rect(label_origin, label_size)); 334 label_->SetBoundsRect(gfx::Rect(label_origin, label_size));
331 } 335 }
332 336
333 const char* LabelButton::GetClassName() const { 337 const char* LabelButton::GetClassName() const {
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 GetExtraParams(params); 513 GetExtraParams(params);
510 return ui::NativeTheme::kHovered; 514 return ui::NativeTheme::kHovered;
511 } 515 }
512 516
513 void LabelButton::ResetCachedPreferredSize() { 517 void LabelButton::ResetCachedPreferredSize() {
514 cached_preferred_size_valid_ = false; 518 cached_preferred_size_valid_ = false;
515 cached_preferred_size_= gfx::Size(); 519 cached_preferred_size_= gfx::Size();
516 } 520 }
517 521
518 } // namespace views 522 } // namespace views
OLDNEW
« ash/wm/overview/window_selector_item.cc ('K') | « ui/views/controls/button/label_button.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698