| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "ui/views/cocoa/tooltip_manager_mac.h" | 
 |  | 
 | #include "ui/base/cocoa/cocoa_base_utils.h" | 
 | #include "ui/gfx/font_list.h" | 
 | #import "ui/gfx/mac/coordinate_conversion.h" | 
 | #import "ui/views/cocoa/bridged_content_view.h" | 
 | #import "ui/views/cocoa/bridged_native_widget.h" | 
 |  | 
 | namespace { | 
 |  | 
 | // Max visual tooltip width in DIPs. Beyond this, Cocoa will wrap text. | 
 | const int kTooltipMaxWidthPixels = 250; | 
 |  | 
 | }  // namespace | 
 |  | 
 | namespace views { | 
 |  | 
 | TooltipManagerMac::TooltipManagerMac(BridgedNativeWidget* widget) | 
 |     : widget_(widget) { | 
 | } | 
 |  | 
 | TooltipManagerMac::~TooltipManagerMac() { | 
 | } | 
 |  | 
 | int TooltipManagerMac::GetMaxWidth(const gfx::Point& location) const { | 
 |   return kTooltipMaxWidthPixels; | 
 | } | 
 |  | 
 | const gfx::FontList& TooltipManagerMac::GetFontList() const { | 
 |   CR_DEFINE_STATIC_LOCAL(gfx::FontList, font_list, | 
 |                          (gfx::Font([NSFont toolTipsFontOfSize:0]))); | 
 |   return font_list; | 
 | } | 
 |  | 
 | void TooltipManagerMac::UpdateTooltip() { | 
 |   NSWindow* window = widget_->ns_window(); | 
 |   BridgedContentView* view = widget_->ns_view(); | 
 |  | 
 |   NSPoint nspoint = | 
 |       ui::ConvertPointFromScreenToWindow(window, [NSEvent mouseLocation]); | 
 |   // Note: flip in the view's frame, which matches the window's contentRect. | 
 |   gfx::Point point(nspoint.x, NSHeight([view frame]) - nspoint.y); | 
 |   [view updateTooltipIfRequiredAt:point]; | 
 | } | 
 |  | 
 | void TooltipManagerMac::TooltipTextChanged(View* view) { | 
 |   // The intensive part is View::GetTooltipHandlerForPoint(), which will be done | 
 |   // in [BridgedContentView updateTooltipIfRequiredAt:]. Don't do it here as | 
 |   // well. | 
 |   UpdateTooltip(); | 
 | } | 
 |  | 
 | }  // namespace views |