| Index: views/widget/tooltip_manager.h
|
| ===================================================================
|
| --- views/widget/tooltip_manager.h (revision 17063)
|
| +++ views/widget/tooltip_manager.h (working copy)
|
| @@ -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 @@
|
| // 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_
|
|
|