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

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

Issue 8598031: views: Move widget/ directory to ui/views. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reland for real Created 9 years, 1 month 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_views.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
(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 #ifndef VIEWS_WIDGET_TOOLTIP_MANAGER_WIN_H_
6 #define VIEWS_WIDGET_TOOLTIP_MANAGER_WIN_H_
7 #pragma once
8
9 #include <windows.h>
10 #include <commctrl.h>
11 #include <string>
12
13 #include "base/basictypes.h"
14 #include "base/memory/weak_ptr.h"
15 #include "base/string16.h"
16 #include "ui/gfx/native_widget_types.h"
17 #include "ui/gfx/point.h"
18 #include "views/widget/tooltip_manager.h"
19
20 namespace gfx {
21 class Point;
22 }
23
24 namespace views {
25
26 class View;
27 class Widget;
28
29 // TooltipManager implementation for Windows.
30 //
31 // This class is intended to be used by NativeWidgetWin. To use this, you must
32 // do the following:
33 // Add the following to your MSG_MAP:
34 //
35 // MESSAGE_RANGE_HANDLER(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
36 // MESSAGE_RANGE_HANDLER(WM_NCMOUSEMOVE, WM_NCMOUSEMOVE, OnMouseRange)
37 // MSG_WM_NOTIFY(OnNotify)
38 //
39 // With the following implementations:
40 // LRESULT XXX::OnMouseRange(UINT u_msg, WPARAM w_param, LPARAM l_param,
41 // BOOL& handled) {
42 // tooltip_manager_->OnMouse(u_msg, w_param, l_param);
43 // handled = FALSE;
44 // return 0;
45 // }
46 //
47 // LRESULT XXX::OnNotify(int w_param, NMHDR* l_param) {
48 // bool handled;
49 // LRESULT result = tooltip_manager_->OnNotify(w_param, l_param, &handled);
50 // SetMsgHandled(handled);
51 // return result;
52 // }
53 //
54 // And of course you'll need to create the TooltipManager!
55 //
56 // Lastly, you'll need to override GetTooltipManager.
57 //
58 // See NativeWidgetWin for an example of this in action.
59 class TooltipManagerWin : public TooltipManager {
60 public:
61 // Creates a TooltipManager for the specified Widget and parent window.
62 explicit TooltipManagerWin(Widget* widget);
63 virtual ~TooltipManagerWin();
64
65 // Initializes the TooltipManager returning whether initialization was
66 // successful. If this returns false the TooltipManager should be destroyed
67 // and not used.
68 bool Init();
69
70 // Notification that the view hierarchy has changed in some way.
71 virtual void UpdateTooltip();
72
73 // Invoked when the tooltip text changes for the specified views.
74 virtual void TooltipTextChanged(View* view);
75
76 // Invoked when toolbar icon gets focus.
77 virtual void ShowKeyboardTooltip(View* view);
78
79 // Invoked when toolbar loses focus.
80 virtual void HideKeyboardTooltip();
81
82 // Message handlers. These forward to the tooltip control.
83 virtual void OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param);
84 LRESULT OnNotify(int w_param, NMHDR* l_param, bool* handled);
85
86 protected:
87 // Returns the Widget we're showing tooltips for.
88 gfx::NativeView GetParent();
89
90 // Updates the tooltip for the specified location.
91 void UpdateTooltip(const gfx::Point& location);
92
93 // Tooltip control window.
94 HWND tooltip_hwnd_;
95
96 // Tooltip information.
97 TOOLINFO toolinfo_;
98
99 // Last location of the mouse. This is in the coordinates of the rootview.
100 gfx::Point last_mouse_pos_;
101
102 // Whether or not the tooltip is showing.
103 bool tooltip_showing_;
104
105 private:
106 // Sets the tooltip position based on the x/y position of the text. If the
107 // tooltip fits, true is returned.
108 bool SetTooltipPosition(int text_x, int text_y);
109
110 // Calculates the preferred height for tooltips. This always returns a
111 // positive value.
112 int CalcTooltipHeight();
113
114 // Invoked when the timer elapses and tooltip has to be destroyed.
115 void DestroyKeyboardTooltipWindow(HWND window_to_destroy);
116
117 // Hosting Widget.
118 Widget* widget_;
119
120 // The View the mouse is under. This is null if the mouse isn't under a
121 // View.
122 View* last_tooltip_view_;
123
124 // Whether or not the view under the mouse needs to be refreshed. If this
125 // is true, when the tooltip is asked for the view under the mouse is
126 // refreshed.
127 bool last_view_out_of_sync_;
128
129 // Text for tooltip from the view.
130 string16 tooltip_text_;
131
132 // The clipped tooltip.
133 string16 clipped_text_;
134
135 // Number of lines in the tooltip.
136 int line_count_;
137
138 // Width of the last tooltip.
139 int tooltip_width_;
140
141 // control window for tooltip displayed using keyboard.
142 HWND keyboard_tooltip_hwnd_;
143
144 // Used to register DestroyTooltipWindow function with PostDelayedTask
145 // function.
146 base::WeakPtrFactory<TooltipManagerWin> keyboard_tooltip_factory_;
147
148 DISALLOW_COPY_AND_ASSIGN(TooltipManagerWin);
149 };
150
151 } // namespace views
152
153 #endif // VIEWS_WIDGET_TOOLTIP_MANAGER_WIN_H_
OLDNEW
« no previous file with comments | « views/widget/tooltip_manager_views.cc ('k') | views/widget/tooltip_manager_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698