Chromium Code Reviews| Index: chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc |
| diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc |
| index 4abe60c7c68684c4ea339439a1923b18e5df36a6..2f6a68381ce71478daabc97ee82848806f813559 100644 |
| --- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc |
| +++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc |
| @@ -4,6 +4,8 @@ |
| #include "chrome/browser/ui/views/location_bar/icon_label_bubble_view.h" |
| +#include <iostream> |
| + |
| #include "base/strings/utf_string_conversions.h" |
| #include "chrome/browser/ui/layout_constants.h" |
| #include "chrome/browser/ui/views/location_bar/background_with_1_px_border.h" |
| @@ -123,8 +125,9 @@ bool IconLabelBubbleView::OnActivate(const ui::Event& event) { |
| } |
| gfx::Size IconLabelBubbleView::GetPreferredSize() const { |
| + std::cout << "Icon::GetPreferredSize\n"; |
|
Peter Kasting
2016/07/19 21:17:19
You may want to use the VLOG macro for this kind o
Kevin Bailey
2016/08/12 18:49:14
ack
|
| // Height will be ignored by the LocationBarView. |
| - return GetSizeForLabelWidth(label_->GetPreferredSize().width()); |
| + return GetSizeForLabelWidth(GetLabelPreferredWidth()); |
| } |
| bool IconLabelBubbleView::OnKeyPressed(const ui::KeyEvent& event) { |
| @@ -140,6 +143,7 @@ bool IconLabelBubbleView::OnKeyReleased(const ui::KeyEvent& event) { |
| } |
| void IconLabelBubbleView::Layout() { |
| + std::cout << "Icon::Layout " << (void*)this << "\n"; |
| // Compute the image bounds. In non-MD, the leading padding depends on |
| // whether this is an extension icon, since extension icons and |
| // Chrome-provided icons are different sizes. In MD, these sizes are the |
| @@ -250,11 +254,18 @@ gfx::Size IconLabelBubbleView::GetSizeForLabelWidth(int label_width) const { |
| // enough to show the icon. We don't want to shrink all the way back to |
| // zero, since this would mean the view would completely disappear and then |
| // pop back to an icon after the animation finishes. |
| - const int max_width = GetImageTrailingEdge() + GetInternalSpacing() + |
| - label_width + post_label_width; |
| - const int current_width = WidthMultiplier() * max_width; |
| - size.set_width(shrinking ? std::max(current_width, size.width()) |
| - : current_width); |
| + // Changed so that, while shrinking, |multiplier| only refers to the label, |
| + // separator and padding. |
|
Peter Kasting
2016/07/19 21:17:20
I'm not really sure why. You'll want to explain t
Kevin Bailey
2016/08/12 18:49:14
I integrated the comment better. Strictly speaking
|
| + if (shrinking) { |
| + const int current_width = GetImageTrailingEdge() + GetInternalSpacing() + |
| + (label_width + post_label_width) * WidthMultiplier(); |
| + size.set_width(std::max(current_width, size.width())); |
|
Peter Kasting
2016/07/19 21:17:20
Unless GetInternalSpacing() or WidthMultiplier() c
Kevin Bailey
2016/08/12 18:49:14
Done.
|
| + } else { |
| + const int max_width = GetImageTrailingEdge() + GetInternalSpacing() + |
| + label_width + post_label_width; |
| + const int current_width = WidthMultiplier() * max_width; |
| + size.set_width(current_width); |
| + } |
| } |
| return size; |
| } |
| @@ -263,6 +274,10 @@ int IconLabelBubbleView::MinimumWidthForImageWithBackgroundShown() const { |
| return GetImageTrailingEdge() + GetOuterPadding(false); |
| } |
| +int IconLabelBubbleView::GetLabelPreferredWidth() const { |
| + return label_->GetPreferredSize().width(); |
| +} |
| + |
| void IconLabelBubbleView::SetLabelBackgroundColor( |
| SkColor chip_background_color) { |
| // The background images are painted atop |parent_background_color_|. |
| @@ -307,6 +322,7 @@ const char* IconLabelBubbleView::GetClassName() const { |
| } |
| void IconLabelBubbleView::OnPaint(gfx::Canvas* canvas) { |
| + std::cout << "Icon::OnPaint\n"; |
| if (!ShouldShowBackground()) |
| return; |
| if (background_painter_) { |
| @@ -321,18 +337,20 @@ void IconLabelBubbleView::OnPaint(gfx::Canvas* canvas) { |
| const SkColor separator_color = SkColorSetA( |
| plain_text_color, color_utils::IsDark(plain_text_color) ? 0x59 : 0xCC); |
| - gfx::Rect bounds(GetLocalBounds()); |
| - const int kSeparatorHeight = 16; |
| - bounds.Inset(GetPostSeparatorPadding(), |
| - (bounds.height() - kSeparatorHeight) / 2); |
| - |
| - // Draw the 1 px separator. |
| - gfx::ScopedCanvas scoped_canvas(canvas); |
| - const float scale = canvas->UndoDeviceScaleFactor(); |
| - // Keep the separator aligned on a pixel center. |
| - const gfx::RectF pixel_aligned_bounds = |
| - gfx::ScaleRect(gfx::RectF(bounds), scale) - gfx::Vector2dF(0.5f, 0); |
| - canvas->DrawLine(pixel_aligned_bounds.top_right(), |
| - pixel_aligned_bounds.bottom_right(), separator_color); |
| + if (!IsShrinking() || WidthMultiplier() > 0) { |
|
Peter Kasting
2016/07/19 21:17:19
This doesn't break the keyword search presentation
Kevin Bailey
2016/08/12 18:49:14
We don't shrink any more, so reverted.
|
| + gfx::Rect bounds(GetLocalBounds()); |
| + const int kSeparatorHeight = 16; |
| + bounds.Inset(GetPostSeparatorPadding(), |
| + (bounds.height() - kSeparatorHeight) / 2); |
| + |
| + // Draw the 1 px separator. |
| + gfx::ScopedCanvas scoped_canvas(canvas); |
| + const float scale = canvas->UndoDeviceScaleFactor(); |
| + // Keep the separator aligned on a pixel center. |
| + const gfx::RectF pixel_aligned_bounds = |
| + gfx::ScaleRect(gfx::RectF(bounds), scale) - gfx::Vector2dF(0.5f, 0); |
| + canvas->DrawLine(pixel_aligned_bounds.top_right(), |
| + pixel_aligned_bounds.bottom_right(), separator_color); |
| + } |
| } |
| } |