Chromium Code Reviews| Index: ui/views/corewm/tooltip_controller.cc |
| diff --git a/ui/views/corewm/tooltip_controller.cc b/ui/views/corewm/tooltip_controller.cc |
| index 500466fdf4d646c69ccba8f31c98ef85a8f9496c..37bb99b89fd3ecf04686c89304c0fd8a3a34661e 100644 |
| --- a/ui/views/corewm/tooltip_controller.cc |
| +++ b/ui/views/corewm/tooltip_controller.cc |
| @@ -115,6 +115,7 @@ aura::Window* GetTooltipTarget(const ui::MouseEvent& event, |
| TooltipController::TooltipController(scoped_ptr<Tooltip> tooltip) |
| : tooltip_window_(NULL), |
| + tooltip_unique_(NULL), |
| tooltip_window_at_mouse_press_(NULL), |
| tooltip_(tooltip.Pass()), |
| tooltips_enabled_(true) { |
| @@ -275,12 +276,23 @@ void TooltipController::UpdateIfRequired() { |
| tooltip_window_at_mouse_press_ = NULL; |
| } |
| + // If the uniqueness indicator is different from the previously encountered |
| + // one, we should force tooltip update |
| + const void* tooltip_unique = aura::client::GetTooltipUnique(tooltip_window_); |
| + bool force = false; |
|
sky
2014/04/23 20:08:46
force->ids_differ
Mikus
2014/04/24 08:39:56
Done.
|
| + if (tooltip_unique) { |
| + force = tooltip_unique_ != tooltip_unique; |
| + tooltip_unique_ = tooltip_unique; |
| + } else { |
| + tooltip_unique_ = NULL; |
| + } |
| + |
| // We add the !tooltip_->IsVisible() below because when we come here from |
| // TooltipTimerFired(), the tooltip_text may not have changed but we still |
| // want to update the tooltip because the timer has fired. |
| // If we come here from UpdateTooltip(), we have already checked for tooltip |
| // visibility and this check below will have no effect. |
| - if (tooltip_text_ != tooltip_text || !tooltip_->IsVisible()) { |
| + if (tooltip_text_ != tooltip_text || !tooltip_->IsVisible() || force) { |
| tooltip_shown_timer_.Stop(); |
| tooltip_text_ = tooltip_text; |
| base::string16 trimmed_text(tooltip_text_); |