| Index: views/widget/tooltip_manager_views.cc
|
| diff --git a/views/widget/tooltip_manager_views.cc b/views/widget/tooltip_manager_views.cc
|
| index a8b6d975d8852898a715d07d465747265714acae..a7d367bf487ba0f22d0ce8c98c1b24d70655db58 100644
|
| --- a/views/widget/tooltip_manager_views.cc
|
| +++ b/views/widget/tooltip_manager_views.cc
|
| @@ -75,7 +75,8 @@ int TooltipManager::GetMaxWidth(int x, int y) {
|
|
|
| TooltipManagerViews::TooltipManagerViews(views::View* root_view)
|
| : root_view_(root_view),
|
| - tooltip_view_(NULL) {
|
| + tooltip_view_(NULL),
|
| + widget_closed_(false) {
|
| tooltip_label_.set_background(
|
| views::Background::CreateSolidBackground(kTooltipBackground));
|
| tooltip_widget_.reset(CreateTooltip());
|
| @@ -86,6 +87,7 @@ TooltipManagerViews::TooltipManagerViews(views::View* root_view)
|
| base::TimeDelta::FromMilliseconds(kTooltipTimeoutMs),
|
| this, &TooltipManagerViews::TooltipTimerFired);
|
| MessageLoopForUI::current()->AddObserver(this);
|
| + root_view_->GetWidget()->AddObserver(this);
|
| }
|
|
|
| TooltipManagerViews::~TooltipManagerViews() {
|
| @@ -150,6 +152,11 @@ void TooltipManagerViews::DidProcessEvent(const base::NativeEvent& event) {
|
| }
|
| #endif
|
|
|
| +void TooltipManagerViews::OnWidgetClosing(Widget* widget) {
|
| + tooltip_timer_.Stop();
|
| + widget_closed_ = true;
|
| +}
|
| +
|
| void TooltipManagerViews::TooltipTimerFired() {
|
| UpdateIfRequired(curr_mouse_pos_.x(), curr_mouse_pos_.y(), false);
|
| }
|
| @@ -172,6 +179,9 @@ View* TooltipManagerViews::GetViewForTooltip(int x, int y, bool for_keyboard) {
|
| }
|
|
|
| void TooltipManagerViews::UpdateIfRequired(int x, int y, bool for_keyboard) {
|
| + if (widget_closed_)
|
| + return;
|
| +
|
| View* view = GetViewForTooltip(x, y, for_keyboard);
|
| string16 tooltip_text;
|
| if (view)
|
|
|