diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-08 00:34:05 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-08 00:34:05 +0000 |
commit | 2362e4fe2905ab75d3230ebc3e307ae53e2b8362 (patch) | |
tree | e6d88357a2021811e0e354f618247217be8bb3da /views/widget/aero_tooltip_manager.h | |
parent | db23ac3e713dc17509b2b15d3ee634968da45715 (diff) | |
download | chromium_src-2362e4fe2905ab75d3230ebc3e307ae53e2b8362.zip chromium_src-2362e4fe2905ab75d3230ebc3e307ae53e2b8362.tar.gz chromium_src-2362e4fe2905ab75d3230ebc3e307ae53e2b8362.tar.bz2 |
Move src/chrome/views to src/views. RS=darin http://crbug.com/11387
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15604 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget/aero_tooltip_manager.h')
-rw-r--r-- | views/widget/aero_tooltip_manager.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/views/widget/aero_tooltip_manager.h b/views/widget/aero_tooltip_manager.h new file mode 100644 index 0000000..fe5856d --- /dev/null +++ b/views/widget/aero_tooltip_manager.h @@ -0,0 +1,57 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef VIEWS_WIDGET_AERO_TOOLTIP_MANAGER_H_ +#define VIEWS_WIDGET_AERO_TOOLTIP_MANAGER_H_ + +#include "base/ref_counted.h" +#include "base/task.h" +#include "views/widget/tooltip_manager.h" + +namespace views { + +/////////////////////////////////////////////////////////////////////////////// +// AeroTooltipManager +// +// Default Windows tooltips are broken when using our custom window frame +// - as soon as the tooltip receives a WM_MOUSEMOVE event, it starts spewing +// NCHITTEST messages at its parent window (us). These messages have random +// x/y coordinates and can't be ignored, as the DwmDefWindowProc uses +// NCHITTEST messages to determine how to highlight the caption buttons +// (the buttons then flicker as the hit tests sent by the user's mouse +// trigger different effects to those sent by the tooltip). +// +// So instead, we have to partially implement tooltips ourselves using +// TTF_TRACKed tooltips. +// +// TODO(glen): Resolve this with Microsoft. +class AeroTooltipManager : public TooltipManager { + public: + AeroTooltipManager(Widget* widget, HWND parent); + virtual ~AeroTooltipManager(); + + virtual void OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param); + virtual void OnMouseLeave(); + + private: + void Init(); + void OnTimer(); + + class InitialTimer : public base::RefCounted<InitialTimer> { + public: + InitialTimer(AeroTooltipManager* manager, int time); + void Disown(); + void Execute(); + + private: + AeroTooltipManager* manager_; + }; + + int initial_delay_; + scoped_refptr<InitialTimer> initial_timer_; +}; + +} // namespace views + +#endif // #ifndef VIEWS_WIDGET_AERO_TOOLTIP_MANAGER_H_ |