Chromium Code Reviews| Index: ui/views/cocoa/tooltip_manager_mac.mm |
| diff --git a/ui/views/cocoa/tooltip_manager_mac.mm b/ui/views/cocoa/tooltip_manager_mac.mm |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fd5fac9cf23405aae4622582250f467b7005ac79 |
| --- /dev/null |
| +++ b/ui/views/cocoa/tooltip_manager_mac.mm |
| @@ -0,0 +1,52 @@ |
| +// 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/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" |
| + |
| +// Max visual tooltip width in DIPs. Beyond this, Cocoa will wrap text. |
| +const int kTooltipMaxWidthPixels = 250; |
|
Andre
2015/05/13 19:33:13
Should be inside unnamed namespace.
tapted
2015/05/15 07:59:55
Done (`const` also imposes internal linkage, but I
|
| + |
| +namespace views { |
| + |
| +TooltipManagerMac::TooltipManagerMac(BridgedNativeWidget* widget) |
| + : widget_(widget) { |
| +} |
| + |
| +TooltipManagerMac::~TooltipManagerMac() { |
| +} |
| + |
| +int TooltipManagerMac::GetMaxWidth(const gfx::Point& location, |
| + gfx::NativeView context) 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 = [window convertScreenToBase:[NSEvent mouseLocation]]; |
|
Andre
2015/05/13 19:33:13
Why not [window mouseLocationOutsideOfEventStream]
tapted
2015/05/15 07:59:55
Hm, it wasn't a conscious decision. I tried it out
|
| + // 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 |