Index: ui/views/corewm/tooltip_controller.cc |
diff --git a/ui/views/corewm/tooltip_controller.cc b/ui/views/corewm/tooltip_controller.cc |
index 6a0608ea33ce299deb699c4f6108760cce28a3eb..5aee40db2bc58d8c13370a4bec7ed21b81bb8a36 100644 |
--- a/ui/views/corewm/tooltip_controller.cc |
+++ b/ui/views/corewm/tooltip_controller.cc |
@@ -48,7 +48,7 @@ const size_t kMaxLines = 10; |
// difference in font metrics. Rationalize this. |
const int kTooltipVerticalPadding = 2; |
const int kTooltipTimeoutMs = 500; |
-const int kTooltipShownTimeoutMs = 10000; |
+const int kDefaultTooltipShownTimeoutMs = 10000; |
// FIXME: get cursor offset from actual cursor size. |
const int kCursorOffsetX = 10; |
@@ -230,6 +230,11 @@ void TooltipController::UpdateTooltip(aura::Window* target) { |
} |
} |
+void TooltipController::SetTooltipShownTimeout(aura::Window* target, |
+ int timeout_in_ms) { |
+ tooltip_shown_timeout_map_[target] = timeout_in_ms; |
+} |
+ |
void TooltipController::SetTooltipsEnabled(bool enable) { |
if (tooltips_enabled_ == enable) |
return; |
@@ -309,6 +314,7 @@ void TooltipController::OnCancelMode(ui::CancelModeEvent* event) { |
void TooltipController::OnWindowDestroyed(aura::Window* window) { |
if (tooltip_window_ == window) { |
+ tooltip_shown_timeout_map_.erase(tooltip_window_); |
tooltip_window_->RemoveObserver(this); |
tooltip_window_ = NULL; |
} |
@@ -477,9 +483,12 @@ void TooltipController::UpdateIfRequired() { |
} else { |
GetTooltip()->SetText(tooltip_window_, tooltip_text_, widget_loc); |
GetTooltip()->Show(); |
- tooltip_shown_timer_.Start(FROM_HERE, |
- base::TimeDelta::FromMilliseconds(kTooltipShownTimeoutMs), |
- this, &TooltipController::TooltipShownTimerFired); |
+ int timeout = GetTooltipShownTimeout(); |
+ if (timeout > 0) { |
+ tooltip_shown_timer_.Start(FROM_HERE, |
+ base::TimeDelta::FromMilliseconds(timeout), |
+ this, &TooltipController::TooltipShownTimerFired); |
+ } |
} |
} |
} |
@@ -515,5 +524,13 @@ bool TooltipController::IsCursorVisible() { |
return !cursor_client || cursor_client->IsCursorVisible(); |
} |
+int TooltipController::GetTooltipShownTimeout() { |
+ std::map<aura::Window*, int>::const_iterator it = |
+ tooltip_shown_timeout_map_.find(tooltip_window_); |
+ if (it == tooltip_shown_timeout_map_.end()) |
+ return kDefaultTooltipShownTimeoutMs; |
+ return it->second; |
+} |
+ |
} // namespace corewm |
} // namespace views |