Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(377)

Side by Side Diff: ui/views/widget/tooltip_manager_aura.cc

Issue 8747022: Aura: Tooltips (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: modified according to comments Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/logging.h"
6 #include "ui/aura/client/aura_constants.h"
7 #include "ui/aura/client/tooltip_client.h"
8 #include "ui/aura/desktop.h"
9 #include "ui/base/resource/resource_bundle.h"
10 #include "ui/gfx/font.h"
11 #include "ui/gfx/rect.h"
12 #include "ui/gfx/screen.h"
13 #include "ui/views/widget/native_widget_aura.h"
14 #include "ui/views/widget/tooltip_manager_aura.h"
15
16 namespace views {
17
18 // static
19 int TooltipManager::GetTooltipHeight() {
20 // Not used for linux and chromeos.
21 NOTIMPLEMENTED();
22 return 0;
23 }
24
25 // static
26 gfx::Font TooltipManager::GetDefaultFont() {
27 return ui::ResourceBundle::GetSharedInstance().GetFont(
Ben Goodger (Google) 2011/11/30 22:52:20 You should be able to replace this function and Ge
varunjain 2011/11/30 23:25:52 Done.
28 ui::ResourceBundle::BaseFont);
29 }
30
31 // static
32 int TooltipManager::GetMaxWidth(int x, int y) {
33 // FIXME: change this. This is for now just copied from TooltipManagerGtk.
34
35 // We always display the tooltip inside the root view. So the max width is
36 // the width of the view.
37 gfx::Rect monitor_bounds =
38 gfx::Screen::GetMonitorAreaNearestPoint(gfx::Point(x, y));
39 // GtkLabel (gtk_label_ensure_layout) forces wrapping at this size. We mirror
40 // the size here otherwise tooltips wider than the size used by gtklabel end
41 // up with extraneous empty lines.
42 return monitor_bounds.width() == 0 ? 800 : (monitor_bounds.width() + 1) / 2;
43 }
44
45 ////////////////////////////////////////////////////////////////////////////////
46 // TooltipManagerAura public:
47
48 TooltipManagerAura::TooltipManagerAura(NativeWidgetAura* native_widget_aura)
49 : native_widget_aura_(native_widget_aura) {
50 native_widget_aura_->GetNativeView()->SetProperty(aura::kTooltipTextKey,
51 &tooltip_text_);
52 }
53
54 TooltipManagerAura::~TooltipManagerAura() {
55 native_widget_aura_->GetNativeView()->SetProperty(aura::kTooltipTextKey,
56 NULL);
57 }
58
59 ////////////////////////////////////////////////////////////////////////////////
60 // TooltipManagerAura, TooltipManager implementation:
61
62 void TooltipManagerAura::UpdateTooltip() {
63 void* property = aura::Desktop::GetInstance()->GetProperty(
64 aura::kDesktopTooltipClientKey);
65 if (property) {
66 gfx::Point view_point = aura::Desktop::GetInstance()->last_mouse_location();
67 aura::Window::ConvertPointToWindow(aura::Desktop::GetInstance(),
68 native_widget_aura_->GetNativeView(), &view_point);
69 View* view = GetViewUnderPoint(view_point);
70 if (view) {
71 View::ConvertPointFromWidget(view, &view_point);
72 if (!view->GetTooltipText(view_point, &tooltip_text_))
73 tooltip_text_.clear();
74 } else {
75 tooltip_text_.clear();
76 }
77 aura::TooltipClient* tc = static_cast<aura::TooltipClient*>(property);
78 tc->UpdateTooltip(native_widget_aura_->GetNativeView());
79 }
80 }
81
82 void TooltipManagerAura::TooltipTextChanged(View* view) {
83 void* property = aura::Desktop::GetInstance()->GetProperty(
84 aura::kDesktopTooltipClientKey);
85 if (property) {
86 gfx::Point view_point = aura::Desktop::GetInstance()->last_mouse_location();
87 aura::Window::ConvertPointToWindow(aura::Desktop::GetInstance(),
88 native_widget_aura_->GetNativeView(), &view_point);
89 View* target = GetViewUnderPoint(view_point);
90 if (target != view)
91 return;
92 if (target) {
93 View::ConvertPointFromWidget(view, &view_point);
94 if (!view->GetTooltipText(view_point, &tooltip_text_))
95 tooltip_text_.clear();
96 } else {
97 tooltip_text_.clear();
98 }
99 aura::TooltipClient* tc = static_cast<aura::TooltipClient*>(property);
100 tc->UpdateTooltip(native_widget_aura_->GetNativeView());
101 }
102 }
103
104 void TooltipManagerAura::ShowKeyboardTooltip(View* view) {
105 NOTREACHED();
106 }
107
108 void TooltipManagerAura::HideKeyboardTooltip() {
109 NOTREACHED();
110 }
111
112 View* TooltipManagerAura::GetViewUnderPoint(const gfx::Point& point) {
113 View* root_view = native_widget_aura_->GetWidget()->GetRootView();
114 return root_view->GetEventHandlerForPoint(point);
115 }
116
117 } // namespace views.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698