Index: ui/views/corewm/tooltip_aura.cc |
diff --git a/ui/views/corewm/tooltip_aura.cc b/ui/views/corewm/tooltip_aura.cc |
index 900031e0b37502f9a3feca929fcbd226404f3165..77bad4060c220f3cba6ed6908830a84f237c7db3 100644 |
--- a/ui/views/corewm/tooltip_aura.cc |
+++ b/ui/views/corewm/tooltip_aura.cc |
@@ -17,19 +17,12 @@ |
namespace { |
-const int kTooltipHorizontalPadding = 3; |
- |
// Max visual tooltip width. If a tooltip is greater than this width, it will |
// be wrapped. |
const int kTooltipMaxWidthPixels = 400; |
const size_t kMaxLines = 10; |
-// TODO(derat): This padding is needed on Chrome OS devices but seems excessive |
-// when running the same binary on a Linux workstation; presumably there's a |
-// difference in font metrics. Rationalize this. |
-const int kTooltipVerticalPadding = 2; |
- |
// FIXME: get cursor offset from actual cursor size. |
const int kCursorOffsetX = 10; |
const int kCursorOffsetY = 15; |
@@ -60,6 +53,12 @@ TooltipAura::TooltipAura(gfx::ScreenType screen_type) |
tooltip_window_(NULL) { |
label_.set_owned_by_client(); |
label_.SetMultiLine(true); |
+ |
+ const int kHorizontalPadding = 3; |
+ const int kVerticalPadding = 2; |
+ label_.SetBorder(Border::CreateEmptyBorder( |
+ kVerticalPadding, kHorizontalPadding, |
+ kVerticalPadding, kHorizontalPadding)); |
} |
TooltipAura::~TooltipAura() { |
@@ -151,11 +150,8 @@ int TooltipAura::GetMaxWidth(const gfx::Point& location) const { |
} |
void TooltipAura::SetTooltipBounds(const gfx::Point& mouse_pos, |
- int tooltip_width, |
- int tooltip_height) { |
- gfx::Rect tooltip_rect(mouse_pos.x(), mouse_pos.y(), tooltip_width, |
- tooltip_height); |
- |
+ const gfx::Size& tooltip_size) { |
+ gfx::Rect tooltip_rect(mouse_pos, tooltip_size); |
tooltip_rect.Offset(kCursorOffsetX, kCursorOffsetY); |
gfx::Screen* screen = gfx::Screen::GetScreenByType(screen_type_); |
gfx::Rect display_bounds(screen->GetDisplayNearestPoint(mouse_pos).bounds()); |
@@ -170,7 +166,7 @@ void TooltipAura::SetTooltipBounds(const gfx::Point& mouse_pos, |
// If tooltip is out of bounds on the y axis, we flip it to appear above the |
// mouse cursor instead of below. |
if (tooltip_rect.bottom() > display_bounds.bottom()) |
- tooltip_rect.set_y(mouse_pos.y() - tooltip_height); |
+ tooltip_rect.set_y(mouse_pos.y() - tooltip_size.height()); |
tooltip_rect.AdjustToFit(display_bounds); |
widget_->SetBounds(tooltip_rect); |
@@ -188,15 +184,13 @@ void TooltipAura::SetText(aura::Window* window, |
const base::string16& tooltip_text, |
const gfx::Point& location) { |
tooltip_window_ = window; |
- int max_width, line_count; |
+ int max_width = 0; |
+ int line_count = 0; |
base::string16 trimmed_text(tooltip_text); |
TrimTooltipToFit(label_.font_list(), GetMaxWidth(location), &trimmed_text, |
&max_width, &line_count); |
label_.SetText(trimmed_text); |
- |
- int width = max_width + 2 * kTooltipHorizontalPadding; |
- int height = label_.GetHeightForWidth(max_width) + |
- 2 * kTooltipVerticalPadding; |
+ label_.SizeToFit(max_width + label_.GetInsets().width()); |
if (!widget_) { |
widget_ = CreateTooltipWidget(tooltip_window_); |
@@ -204,7 +198,7 @@ void TooltipAura::SetText(aura::Window* window, |
widget_->AddObserver(this); |
} |
- SetTooltipBounds(location, width, height); |
+ SetTooltipBounds(location, label_.size()); |
ui::NativeTheme* native_theme = widget_->GetNativeTheme(); |
label_.set_background( |