summaryrefslogtreecommitdiffstats
path: root/views/widget/tooltip_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'views/widget/tooltip_manager.h')
-rw-r--r--views/widget/tooltip_manager.h143
1 files changed, 13 insertions, 130 deletions
diff --git a/views/widget/tooltip_manager.h b/views/widget/tooltip_manager.h
index 5cfe2bf..cb48973 100644
--- a/views/widget/tooltip_manager.h
+++ b/views/widget/tooltip_manager.h
@@ -5,51 +5,21 @@
#ifndef VIEWS_WIDGET_TOOLTIP_MANAGER_H_
#define VIEWS_WIDGET_TOOLTIP_MANAGER_H_
-#include <windows.h>
-#include <commctrl.h>
-
#include <string>
+
#include "base/basictypes.h"
-#include "base/task.h"
namespace gfx {
class Font;
-}
+} // namespace gfx
namespace views {
class View;
-class Widget;
-
-// TooltipManager takes care of the wiring to support tooltips for Views.
-// This class is intended to be used by Widgets. To use this, you must
-// do the following:
-// Add the following to your MSG_MAP:
-//
-// MESSAGE_RANGE_HANDLER(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
-// MESSAGE_RANGE_HANDLER(WM_NCMOUSEMOVE, WM_NCMOUSEMOVE, OnMouseRange)
-// MSG_WM_NOTIFY(OnNotify)
-//
-// With the following implementations:
-// LRESULT XXX::OnMouseRange(UINT u_msg, WPARAM w_param, LPARAM l_param,
-// BOOL& handled) {
-// tooltip_manager_->OnMouse(u_msg, w_param, l_param);
-// handled = FALSE;
-// return 0;
-// }
-//
-// LRESULT XXX::OnNotify(int w_param, NMHDR* l_param) {
-// bool handled;
-// LRESULT result = tooltip_manager_->OnNotify(w_param, l_param, &handled);
-// SetMsgHandled(handled);
-// return result;
-// }
-//
-// And of course you'll need to create the TooltipManager!
-//
-// Lastly, you'll need to override GetTooltipManager.
-//
-// See XPFrame for an example of this in action.
+
+// TooltipManager takes care of the wiring to support tooltips for Views. You
+// almost never need to interact directly with TooltipManager, rather look to
+// the various tooltip methods on View.
class TooltipManager {
public:
// Returns the height of tooltips. This should only be invoked from within
@@ -62,109 +32,22 @@ class TooltipManager {
// Returns the separator for lines of text in a tooltip.
static const std::wstring& GetLineSeparator();
- // Creates a TooltipManager for the specified Widget and parent window.
- TooltipManager(Widget* widget, HWND parent);
- virtual ~TooltipManager();
+ TooltipManager() {}
+ virtual ~TooltipManager() {}
// Notification that the view hierarchy has changed in some way.
- void UpdateTooltip();
+ virtual void UpdateTooltip() = 0;
// Invoked when the tooltip text changes for the specified views.
- void TooltipTextChanged(View* view);
+ virtual void TooltipTextChanged(View* view) = 0;
// Invoked when toolbar icon gets focus.
- void ShowKeyboardTooltip(View* view);
+ virtual void ShowKeyboardTooltip(View* view) = 0;
// Invoked when toolbar loses focus.
- void HideKeyboardTooltip();
-
- // Message handlers. These forward to the tooltip control.
- virtual void OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param);
- LRESULT OnNotify(int w_param, NMHDR* l_param, bool* handled);
- // Not used directly by TooltipManager, but provided for AeroTooltipManager.
- virtual void OnMouseLeave() {}
-
- protected:
- virtual void Init();
-
- // Updates the tooltip for the specified location.
- void UpdateTooltip(int x, int y);
-
- // Parent window the tooltip is added to.
- HWND parent_;
-
- // Tooltip control window.
- HWND tooltip_hwnd_;
-
- // Tooltip information.
- TOOLINFO toolinfo_;
-
- // Last location of the mouse. This is in the coordinates of the rootview.
- int last_mouse_x_;
- int last_mouse_y_;
-
- // Whether or not the tooltip is showing.
- bool tooltip_showing_;
-
- private:
- // Sets the tooltip position based on the x/y position of the text. If the
- // tooltip fits, true is returned.
- bool SetTooltipPosition(int text_x, int text_y);
-
- // Calculates the preferred height for tooltips. This always returns a
- // positive value.
- int CalcTooltipHeight();
-
- // Trims the tooltip to fit, setting text to the clipped result, width to the
- // width (in pixels) of the clipped text and line_count to the number of lines
- // of text in the tooltip.
- void TrimTooltipToFit(std::wstring* text,
- int* width,
- int* line_count,
- int position_x,
- int position_y,
- HWND window);
-
- // Invoked when the timer elapses and tooltip has to be destroyed.
- void DestroyKeyboardTooltipWindow(HWND window_to_destroy);
-
- // Hosting Widget.
- Widget* widget_;
-
- // The View the mouse is under. This is null if the mouse isn't under a
- // View.
- View* last_tooltip_view_;
-
- // Whether or not the view under the mouse needs to be refreshed. If this
- // is true, when the tooltip is asked for the view under the mouse is
- // refreshed.
- bool last_view_out_of_sync_;
-
- // Text for tooltip from the view.
- std::wstring tooltip_text_;
-
- // The clipped tooltip.
- std::wstring clipped_text_;
-
- // Number of lines in the tooltip.
- int line_count_;
-
- // Width of the last tooltip.
- int tooltip_width_;
-
- // Height for a tooltip; lazily calculated.
- static int tooltip_height_;
-
- // control window for tooltip displayed using keyboard.
- HWND keyboard_tooltip_hwnd_;
-
- // Used to register DestroyTooltipWindow function with PostDelayedTask
- // function.
- ScopedRunnableMethodFactory<TooltipManager> keyboard_tooltip_factory_;
-
- DISALLOW_EVIL_CONSTRUCTORS(TooltipManager);
+ virtual void HideKeyboardTooltip() = 0;
};
} // namespace views
-#endif // VIEWS_WIDGET_TOOLTIP_MANAGER_H_
+#endif // VIEWS_WIDGET_TOOLTIP_MANAGER_H_