From 27538ecef51ebcc7622f13956d2f8e101d0f71a7 Mon Sep 17 00:00:00 2001 From: RealBadAngel Date: Tue, 24 Jun 2014 12:28:24 +0200 Subject: Tooltips rework. Separate element for tooltips. Delayed showing, use global color or given ones. --- src/guiFormSpecMenu.h | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'src/guiFormSpecMenu.h') diff --git a/src/guiFormSpecMenu.h b/src/guiFormSpecMenu.h index 81dd7ba16..da0826681 100644 --- a/src/guiFormSpecMenu.h +++ b/src/guiFormSpecMenu.h @@ -159,7 +159,6 @@ class GUIFormSpecMenu : public GUIModalMenu send = false; ftype = f_Unknown; is_exit = false; - tooltip=""; } std::wstring fname; std::wstring flabel; @@ -169,7 +168,6 @@ class GUIFormSpecMenu : public GUIModalMenu FormspecFieldType ftype; bool is_exit; core::rect rect; - std::string tooltip; }; struct BoxDrawSpec { @@ -184,6 +182,22 @@ class GUIFormSpecMenu : public GUIModalMenu irr::video::SColor color; }; + struct TooltipSpec { + TooltipSpec() + { + } + TooltipSpec(std::string a_tooltip, irr::video::SColor a_bgcolor, + irr::video::SColor a_color): + tooltip(a_tooltip), + bgcolor(a_bgcolor), + color(a_color) + { + } + std::string tooltip; + irr::video::SColor bgcolor; + irr::video::SColor color; + }; + public: GUIFormSpecMenu(irr::IrrlichtDevice* dev, gui::IGUIElement* parent, s32 id, @@ -286,7 +300,8 @@ protected: std::vector m_fields; std::vector > m_tables; std::vector > m_checkboxes; - + std::map m_tooltips; + ItemSpec *m_selected_item; u32 m_selected_amount; bool m_selected_dragging; @@ -300,6 +315,10 @@ protected: v2s32 m_pointer; gui::IGUIStaticText *m_tooltip_element; + s32 m_hoovered_time; + s32 m_old_tooltip_id; + std::string m_old_tooltip; + bool m_allowclose; bool m_lock; v2u32 m_lockscreensize; @@ -311,6 +330,9 @@ protected: video::SColor m_slotbg_n; video::SColor m_slotbg_h; video::SColor m_slotbordercolor; + video::SColor m_default_tooltip_bgcolor; + video::SColor m_default_tooltip_color; + private: IFormSource *m_form_src; TextDest *m_text_dst; @@ -366,6 +388,7 @@ private: void parseBox(parserData* data,std::string element); void parseBackgroundColor(parserData* data,std::string element); void parseListColors(parserData* data,std::string element); + void parseTooltip(parserData* data,std::string element); /** * check if event is part of a double click -- cgit v1.2.3