• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 UI_VIEWS_COREWM_TOOLTIP_WIN_H_
6 #define UI_VIEWS_COREWM_TOOLTIP_WIN_H_
7 
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "base/strings/string16.h"
11 #include "ui/gfx/point.h"
12 #include "ui/views/corewm/tooltip.h"
13 
14 #include <windows.h>
15 #include <commctrl.h>
16 
17 namespace views {
18 namespace corewm {
19 
20 // Implementation of Tooltip that uses the native win32 control for showing the
21 // tooltip.
22 class VIEWS_EXPORT TooltipWin : public Tooltip {
23  public:
24   explicit TooltipWin(HWND parent);
25   virtual ~TooltipWin();
26 
27   // HandleNotify() is forwarded from DesktopWindowTreeHostWin to keep the
28   // native tooltip in sync.
29   bool HandleNotify(int w_param, NMHDR* l_param, LRESULT* l_result);
30 
31  private:
32   // Ensures |tooltip_hwnd_| is valid. Returns true if valid, false if there
33   // a problem creating |tooltip_hwnd_|.
34   bool EnsureTooltipWindow();
35 
36   // Sets the position of the tooltip.
37   void PositionTooltip();
38 
39   // Tooltip:
40   virtual void SetText(aura::Window* window,
41                        const base::string16& tooltip_text,
42                        const gfx::Point& location) OVERRIDE;
43   virtual void Show() OVERRIDE;
44   virtual void Hide() OVERRIDE;
45   virtual bool IsVisible() OVERRIDE;
46 
47   // The window |tooltip_hwnd_| is parented to.
48   HWND parent_hwnd_;
49 
50   // Shows the tooltip.
51   HWND tooltip_hwnd_;
52 
53   // Used to modify the tooltip.
54   TOOLINFO toolinfo_;
55 
56   // Is the tooltip showing?
57   bool showing_;
58 
59   // Location to show the tooltip at. In order to position the tooltip we need
60   // to know the size. The size is only available from TTN_SHOW, so we have to
61   // cache it.
62   gfx::Point location_;
63 
64   DISALLOW_COPY_AND_ASSIGN(TooltipWin);
65 };
66 
67 }  // namespace corewm
68 }  // namespace views
69 
70 #endif  // UI_VIEWS_COREWM_TOOLTIP_WIN_H_
71