Index: ui/views/corewm/tooltip_controller.cc |
diff --git a/ui/views/corewm/tooltip_controller.cc b/ui/views/corewm/tooltip_controller.cc |
index 86e9fd6c87ae2d59b8bc94da8d23628da26a732f..b1ffc1c7de8e61093d83bcc5c35bbdf21c07df74 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_id_(NULL), |
tooltip_window_at_mouse_press_(NULL), |
tooltip_(tooltip.Pass()), |
tooltips_enabled_(true) { |
@@ -282,12 +283,19 @@ 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_id = aura::client::GetTooltipId(tooltip_window_); |
+ bool ids_differ = false; |
+ ids_differ = tooltip_id_ != tooltip_id; |
+ tooltip_id_ = tooltip_id; |
+ |
// 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() || ids_differ) { |
tooltip_shown_timer_.Stop(); |
tooltip_text_ = tooltip_text; |
base::string16 trimmed_text(tooltip_text_); |