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

Side by Side Diff: views/widget/tooltip_manager_win.h

Issue 114054: Splits TooltipManager so that it can be ported and stubs out the GTK... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 months 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
« no previous file with comments | « views/widget/tooltip_manager_gtk.cc ('k') | views/widget/tooltip_manager_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef VIEWS_WIDGET_TOOLTIP_MANAGER_H_ 5 #ifndef VIEWS_WIDGET_TOOLTIP_MANAGER_WIN_H_
6 #define VIEWS_WIDGET_TOOLTIP_MANAGER_H_ 6 #define VIEWS_WIDGET_TOOLTIP_MANAGER_WIN_H_
7 7
8 #include <windows.h> 8 #include <windows.h>
9 #include <commctrl.h> 9 #include <commctrl.h>
10 #include <string>
10 11
11 #include <string>
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/gfx/native_widget_types.h"
13 #include "base/task.h" 14 #include "base/task.h"
15 #include "views/widget/tooltip_manager.h"
14 16
15 namespace gfx { 17 namespace gfx {
16 class Font; 18 class Font;
17 } 19 }
18 20
19 namespace views { 21 namespace views {
20 22
21 class View; 23 class View;
22 class Widget; 24 class Widget;
23 25
24 // TooltipManager takes care of the wiring to support tooltips for Views. 26 // TooltipManager implementation for Windows.
25 // This class is intended to be used by Widgets. To use this, you must 27 //
28 // This class is intended to be used by WidgetWin. To use this, you must
26 // do the following: 29 // do the following:
27 // Add the following to your MSG_MAP: 30 // Add the following to your MSG_MAP:
28 // 31 //
29 // MESSAGE_RANGE_HANDLER(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange) 32 // MESSAGE_RANGE_HANDLER(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
30 // MESSAGE_RANGE_HANDLER(WM_NCMOUSEMOVE, WM_NCMOUSEMOVE, OnMouseRange) 33 // MESSAGE_RANGE_HANDLER(WM_NCMOUSEMOVE, WM_NCMOUSEMOVE, OnMouseRange)
31 // MSG_WM_NOTIFY(OnNotify) 34 // MSG_WM_NOTIFY(OnNotify)
32 // 35 //
33 // With the following implementations: 36 // With the following implementations:
34 // LRESULT XXX::OnMouseRange(UINT u_msg, WPARAM w_param, LPARAM l_param, 37 // LRESULT XXX::OnMouseRange(UINT u_msg, WPARAM w_param, LPARAM l_param,
35 // BOOL& handled) { 38 // BOOL& handled) {
36 // tooltip_manager_->OnMouse(u_msg, w_param, l_param); 39 // tooltip_manager_->OnMouse(u_msg, w_param, l_param);
37 // handled = FALSE; 40 // handled = FALSE;
38 // return 0; 41 // return 0;
39 // } 42 // }
40 // 43 //
41 // LRESULT XXX::OnNotify(int w_param, NMHDR* l_param) { 44 // LRESULT XXX::OnNotify(int w_param, NMHDR* l_param) {
42 // bool handled; 45 // bool handled;
43 // LRESULT result = tooltip_manager_->OnNotify(w_param, l_param, &handled); 46 // LRESULT result = tooltip_manager_->OnNotify(w_param, l_param, &handled);
44 // SetMsgHandled(handled); 47 // SetMsgHandled(handled);
45 // return result; 48 // return result;
46 // } 49 // }
47 // 50 //
48 // And of course you'll need to create the TooltipManager! 51 // And of course you'll need to create the TooltipManager!
49 // 52 //
50 // Lastly, you'll need to override GetTooltipManager. 53 // Lastly, you'll need to override GetTooltipManager.
51 // 54 //
52 // See XPFrame for an example of this in action. 55 // See WidgetWin for an example of this in action.
53 class TooltipManager { 56 class TooltipManagerWin : public TooltipManager {
54 public: 57 public:
55 // Returns the height of tooltips. This should only be invoked from within
56 // GetTooltipTextOrigin.
57 static int GetTooltipHeight();
58
59 // Returns the default font used by tooltips.
60 static gfx::Font GetDefaultFont();
61
62 // Returns the separator for lines of text in a tooltip.
63 static const std::wstring& GetLineSeparator();
64
65 // Creates a TooltipManager for the specified Widget and parent window. 58 // Creates a TooltipManager for the specified Widget and parent window.
66 TooltipManager(Widget* widget, HWND parent); 59 explicit TooltipManagerWin(Widget* widget);
67 virtual ~TooltipManager(); 60 virtual ~TooltipManagerWin();
68 61
69 // Notification that the view hierarchy has changed in some way. 62 // Notification that the view hierarchy has changed in some way.
70 void UpdateTooltip(); 63 virtual void UpdateTooltip();
71 64
72 // Invoked when the tooltip text changes for the specified views. 65 // Invoked when the tooltip text changes for the specified views.
73 void TooltipTextChanged(View* view); 66 virtual void TooltipTextChanged(View* view);
74 67
75 // Invoked when toolbar icon gets focus. 68 // Invoked when toolbar icon gets focus.
76 void ShowKeyboardTooltip(View* view); 69 virtual void ShowKeyboardTooltip(View* view);
77 70
78 // Invoked when toolbar loses focus. 71 // Invoked when toolbar loses focus.
79 void HideKeyboardTooltip(); 72 virtual void HideKeyboardTooltip();
80 73
81 // Message handlers. These forward to the tooltip control. 74 // Message handlers. These forward to the tooltip control.
82 virtual void OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param); 75 virtual void OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param);
83 LRESULT OnNotify(int w_param, NMHDR* l_param, bool* handled); 76 LRESULT OnNotify(int w_param, NMHDR* l_param, bool* handled);
84 // Not used directly by TooltipManager, but provided for AeroTooltipManager. 77 // Not used directly by TooltipManager, but provided for AeroTooltipManager.
85 virtual void OnMouseLeave() {} 78 virtual void OnMouseLeave() {}
86 79
87 protected: 80 protected:
88 virtual void Init(); 81 virtual void Init();
89 82
83 // Returns the Widget we're showing tooltips for.
84 gfx::NativeView GetParent();
85
90 // Updates the tooltip for the specified location. 86 // Updates the tooltip for the specified location.
91 void UpdateTooltip(int x, int y); 87 void UpdateTooltip(int x, int y);
92 88
93 // Parent window the tooltip is added to.
94 HWND parent_;
95
96 // Tooltip control window. 89 // Tooltip control window.
97 HWND tooltip_hwnd_; 90 HWND tooltip_hwnd_;
98 91
99 // Tooltip information. 92 // Tooltip information.
100 TOOLINFO toolinfo_; 93 TOOLINFO toolinfo_;
101 94
102 // Last location of the mouse. This is in the coordinates of the rootview. 95 // Last location of the mouse. This is in the coordinates of the rootview.
103 int last_mouse_x_; 96 int last_mouse_x_;
104 int last_mouse_y_; 97 int last_mouse_y_;
105 98
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 138
146 // The clipped tooltip. 139 // The clipped tooltip.
147 std::wstring clipped_text_; 140 std::wstring clipped_text_;
148 141
149 // Number of lines in the tooltip. 142 // Number of lines in the tooltip.
150 int line_count_; 143 int line_count_;
151 144
152 // Width of the last tooltip. 145 // Width of the last tooltip.
153 int tooltip_width_; 146 int tooltip_width_;
154 147
155 // Height for a tooltip; lazily calculated.
156 static int tooltip_height_;
157
158 // control window for tooltip displayed using keyboard. 148 // control window for tooltip displayed using keyboard.
159 HWND keyboard_tooltip_hwnd_; 149 HWND keyboard_tooltip_hwnd_;
160 150
161 // Used to register DestroyTooltipWindow function with PostDelayedTask 151 // Used to register DestroyTooltipWindow function with PostDelayedTask
162 // function. 152 // function.
163 ScopedRunnableMethodFactory<TooltipManager> keyboard_tooltip_factory_; 153 ScopedRunnableMethodFactory<TooltipManagerWin> keyboard_tooltip_factory_;
164 154
165 DISALLOW_EVIL_CONSTRUCTORS(TooltipManager); 155 DISALLOW_COPY_AND_ASSIGN(TooltipManagerWin);
166 }; 156 };
167 157
168 } // namespace views 158 } // namespace views
169 159
170 #endif // VIEWS_WIDGET_TOOLTIP_MANAGER_H_ 160 #endif // VIEWS_WIDGET_TOOLTIP_MANAGER_WIN_H_
OLDNEW
« no previous file with comments | « views/widget/tooltip_manager_gtk.cc ('k') | views/widget/tooltip_manager_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698