diff options
author | BlockMen <nmuelll@web.de> | 2014-09-28 10:10:43 +0200 |
---|---|---|
committer | BlockMen <nmuelll@web.de> | 2014-09-28 10:10:43 +0200 |
commit | 61ed56f916f71a708b56260d7cba2160e8166529 (patch) | |
tree | b60a97684319232b177d296f92fddbcea0699521 | |
parent | b75e7148c2c6ad9a602d78d7ec6356273e3a4214 (diff) | |
download | minetest-61ed56f916f71a708b56260d7cba2160e8166529.tar.gz minetest-61ed56f916f71a708b56260d7cba2160e8166529.tar.bz2 minetest-61ed56f916f71a708b56260d7cba2160e8166529.zip |
Standardize tooltip row detection
-rw-r--r-- | src/guiFormSpecMenu.cpp | 11 | ||||
-rw-r--r-- | src/util/string.h | 10 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp index cbba313bc..f50fd15e5 100644 --- a/src/guiFormSpecMenu.cpp +++ b/src/guiFormSpecMenu.cpp @@ -2144,7 +2144,7 @@ void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase) if (hovering && !m_selected_item) tooltip_text = item.getDefinition(m_gamedef->idef()).description; if (tooltip_text != "") { - std::vector<std::string> tt_rows = split(tooltip_text,'\n'); + std::vector<std::string> tt_rows = str_split(tooltip_text, '\n'); m_tooltip_element->setBackgroundColor(m_default_tooltip_bgcolor); m_tooltip_element->setOverrideColor(m_default_tooltip_color); m_tooltip_element->setVisible(true); @@ -2376,13 +2376,8 @@ void GUIFormSpecMenu::drawMenu() s32 tooltip_width = m_tooltip_element->getTextWidth() + m_btn_height; if (tooltip_x + tooltip_width > (s32)screenSize.X) tooltip_x = (s32)screenSize.X - tooltip_width - m_btn_height; - int lines_count = 1; - size_t i = 0; - while ((i = m_tooltips[iter->fname].tooltip.find("\n", i)) != std::string::npos) { - lines_count++; - i += 2; - } - s32 tooltip_height = m_tooltip_element->getTextHeight() * lines_count + 5; + std::vector<std::string> tt_rows = str_split(m_tooltips[iter->fname].tooltip, '\n'); + s32 tooltip_height = m_tooltip_element->getTextHeight() * tt_rows.size() + 5; m_tooltip_element->setRelativePosition(core::rect<s32>( core::position2d<s32>(tooltip_x, tooltip_y), core::dimension2d<s32>(tooltip_width, tooltip_height))); diff --git a/src/util/string.h b/src/util/string.h index 98d23b161..54a5a458e 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -113,6 +113,16 @@ inline std::vector<std::wstring> str_split(const std::wstring &str, wchar_t deli return parts; } +inline std::vector<std::string> str_split(const std::string &str, char delimiter) { + + std::vector<std::string> parts; + std::stringstream sstr(str); + std::string part; + while(std::getline(sstr, part, delimiter)) + parts.push_back(part); + return parts; +} + inline std::string lowercase(const std::string &s) { std::string s2; |