Chromium Code Reviews| Index: ui/views/corewm/tooltip_aura.cc |
| diff --git a/ui/views/corewm/tooltip_aura.cc b/ui/views/corewm/tooltip_aura.cc |
| index 777603cbeac70def1ed7e14d968cbbe9c6ef74a6..caa7aed3b9f0614d9b9caae99fd59c20668d3abb 100644 |
| --- a/ui/views/corewm/tooltip_aura.cc |
| +++ b/ui/views/corewm/tooltip_aura.cc |
| @@ -147,25 +147,9 @@ void TooltipAura::TrimTooltipToFit(const gfx::FontList& font_list, |
| int TooltipAura::GetMaxWidth(const gfx::Point& location) const { |
| // TODO(varunjain): implementation duplicated in tooltip_manager_aura. Figure |
| // out a way to merge. |
| - gfx::Rect display_bounds = GetBoundsForTooltip(location); |
| - return (display_bounds.width() + 1) / 2; |
| -} |
| - |
| -gfx::Rect TooltipAura::GetBoundsForTooltip( |
| - const gfx::Point& origin) const { |
| - DCHECK(tooltip_window_); |
| - gfx::Rect widget_bounds; |
| - // For Desktop aura we constrain the tooltip to the bounds of the Widget |
| - // (which comes from the RootWindow). |
| - if (screen_type_ == gfx::SCREEN_TYPE_NATIVE && |
| - gfx::SCREEN_TYPE_NATIVE != gfx::SCREEN_TYPE_ALTERNATE) { |
| - widget_bounds = tooltip_window_->GetHost()->GetBounds(); |
| - } |
| gfx::Screen* screen = gfx::Screen::GetScreenByType(screen_type_); |
| - gfx::Rect bounds(screen->GetDisplayNearestPoint(origin).bounds()); |
| - if (!widget_bounds.IsEmpty()) |
| - bounds.Intersect(widget_bounds); |
| - return bounds; |
| + gfx::Rect display_bounds(screen->GetDisplayNearestPoint(location).bounds()); |
| + return (display_bounds.width() + 1) / 2; |
| } |
| void TooltipAura::SetTooltipBounds(const gfx::Point& mouse_pos, |
| @@ -175,7 +159,8 @@ void TooltipAura::SetTooltipBounds(const gfx::Point& mouse_pos, |
| tooltip_height); |
| tooltip_rect.Offset(kCursorOffsetX, kCursorOffsetY); |
| - gfx::Rect display_bounds = GetBoundsForTooltip(mouse_pos); |
| + gfx::Screen* screen = gfx::Screen::GetScreenByType(screen_type_); |
| + gfx::Rect display_bounds(screen->GetDisplayNearestPoint(mouse_pos).bounds()); |
| // If tooltip is out of bounds on the x axis, we simply shift it |
| // horizontally by the offset. |
| @@ -193,22 +178,6 @@ void TooltipAura::SetTooltipBounds(const gfx::Point& mouse_pos, |
| widget_->SetBounds(tooltip_rect); |
| } |
| -void TooltipAura::CreateWidget() { |
| - if (widget_) { |
| - // If the window for which the tooltip is being displayed changes and if the |
| - // tooltip window and the tooltip widget belong to different rootwindows |
| - // then we need to recreate the tooltip widget under the active root window |
| - // hierarchy to get it to display. |
| - if (widget_->GetNativeWindow()->GetRootWindow() == |
| - tooltip_window_->GetRootWindow()) |
| - return; |
| - DestroyWidget(); |
| - } |
| - widget_ = CreateTooltipWidget(tooltip_window_); |
| - widget_->SetContentsView(&label_); |
| - widget_->AddObserver(this); |
| -} |
| - |
| void TooltipAura::DestroyWidget() { |
| if (widget_) { |
| widget_->RemoveObserver(this); |
| @@ -230,18 +199,31 @@ void TooltipAura::SetText(aura::Window* window, |
| int width = max_width + 2 * kTooltipHorizontalPadding; |
| int height = label_.GetHeightForWidth(max_width) + |
| 2 * kTooltipVerticalPadding; |
| - CreateWidget(); |
| + |
| + if (!widget_) { |
|
pkotwicz
2014/05/16 02:22:53
Is it worth adding a comment as to why we want to
Elliot Glaysher
2014/05/16 19:39:42
I'm not sure if this is safe; IIRC, chromeos can h
oshima
2014/05/16 19:49:49
yes, erg@ is correct.
https://code.google.com/p/c
pkotwicz
2014/05/16 20:02:16
My understanding is that views::Widget::SetBounds(
Elliot Glaysher
2014/05/16 20:07:20
Huh, it looks like you're right. ash::ScreenPositi
oshima
2014/05/16 20:11:12
It does, but doe it based on the best matching dis
|
| + widget_ = CreateTooltipWidget(tooltip_window_); |
| + widget_->SetContentsView(&label_); |
| + widget_->AddObserver(this); |
| + } |
| + |
| SetTooltipBounds(location, width, height); |
| + ui::NativeTheme* native_theme = widget_->GetNativeTheme(); |
| label_.set_background( |
| views::Background::CreateSolidBackground( |
| - widget_->GetNativeTheme()->GetSystemColor( |
| + native_theme->GetSystemColor( |
| ui::NativeTheme::kColorId_TooltipBackground))); |
| + |
| + label_.SetAutoColorReadabilityEnabled(false); |
| + label_.SetEnabledColor(native_theme->GetSystemColor( |
| + ui::NativeTheme::kColorId_TooltipText)); |
| } |
| void TooltipAura::Show() { |
| - if (widget_) |
| + if (widget_) { |
| widget_->Show(); |
| + widget_->StackAtTop(); |
| + } |
| } |
| void TooltipAura::Hide() { |