/* ui/tooltip.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_UI_TOOLTIP_H__ #define __INCLUDED_UI_TOOLTIP_H__ #include "ui/label.h" namespace ui { /** * @brief a widget displaying a tooltip. * This class makes sure only one Tooltip is globally visible. */ class Tooltip : public Label { public: Tooltip(Widget *parent); virtual ~Tooltip(); /** * @brief resize the tooltip * */ virtual void resize(); /** * @brief show the tooltip * */ virtual void show(); /** * @brief hide the tooltip * */ virtual void hide(); /** * @brief draw event distributor * The default draw event distributor is overwritten to do nothing. * Tooltips are drawn separately because the need to be on top of everything else. * @see event_draw_global * */ virtual void event_draw(); /** * @brief global draw event distributor * This is called by the user interface to draw the tooltip after everything else. * */ static void event_draw_global(); /** * @brief the tooltip that is currently visible, nullptr if no tooltip is currently shown * * */ static inline Tooltip *global() { return tooltip_global; } protected: /** * @brief draw the tooltip */ virtual void draw(); /** * @brief draw the tooltip background */ virtual void draw_background(); private: static Tooltip *tooltip_global; }; } #endif // __INCLUDED_UI_TOOLTIP_H__