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

Side by Side Diff: views/widget/aero_tooltip_manager.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/views.gyp ('k') | views/widget/aero_tooltip_manager.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_AERO_TOOLTIP_MANAGER_H_
6 #define VIEWS_WIDGET_AERO_TOOLTIP_MANAGER_H_
7 #pragma once
8
9 #include "base/memory/ref_counted.h"
10 #include "views/widget/tooltip_manager_win.h"
11
12 namespace views {
13
14 ///////////////////////////////////////////////////////////////////////////////
15 // AeroTooltipManager
16 //
17 // Default Windows tooltips are broken when using our custom window frame
18 // - as soon as the tooltip receives a WM_MOUSEMOVE event, it starts spewing
19 // NCHITTEST messages at its parent window (us). These messages have random
20 // x/y coordinates and can't be ignored, as the DwmDefWindowProc uses
21 // NCHITTEST messages to determine how to highlight the caption buttons
22 // (the buttons then flicker as the hit tests sent by the user's mouse
23 // trigger different effects to those sent by the tooltip).
24 //
25 // So instead, we have to partially implement tooltips ourselves using
26 // TTF_TRACKed tooltips.
27 //
28 // TODO(glen): Resolve this with Microsoft.
29 class AeroTooltipManager : public TooltipManagerWin {
30 public:
31 explicit AeroTooltipManager(Widget* widget);
32 virtual ~AeroTooltipManager();
33
34 virtual void OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param);
35
36 private:
37 void OnTimer();
38
39 class InitialTimer : public base::RefCounted<InitialTimer> {
40 public:
41 explicit InitialTimer(AeroTooltipManager* manager);
42 void Start(int time);
43 void Disown();
44 void Execute();
45
46 private:
47 friend class base::RefCounted<InitialTimer>;
48
49 ~InitialTimer() {}
50
51 AeroTooltipManager* manager_;
52 };
53
54 int initial_delay_;
55 scoped_refptr<InitialTimer> initial_timer_;
56 };
57
58 } // namespace views
59
60 #endif // #ifndef VIEWS_WIDGET_AERO_TOOLTIP_MANAGER_H_
OLDNEW
« no previous file with comments | « views/views.gyp ('k') | views/widget/aero_tooltip_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698