Skip to content

Commit 6ba50aa

Browse files
KodexKyZeno-
authored andcommittedDec 12, 2014
Responsive tooltip offset for Android.
Signed-off-by: Craig Robbins <kde.psych@gmail.com>
1 parent 9f65fd6 commit 6ba50aa

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed
 

Diff for: ‎src/guiFormSpecMenu.cpp

+30-7
Original file line numberDiff line numberDiff line change
@@ -2234,10 +2234,23 @@ void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase)
22342234
m_tooltip_element->setVisible(true);
22352235
this->bringToFront(m_tooltip_element);
22362236
m_tooltip_element->setText(narrow_to_wide(tooltip_text).c_str());
2237-
s32 tooltip_x = m_pointer.X + m_btn_height;
2238-
s32 tooltip_y = m_pointer.Y + m_btn_height;
22392237
s32 tooltip_width = m_tooltip_element->getTextWidth() + m_btn_height;
22402238
s32 tooltip_height = m_tooltip_element->getTextHeight() * tt_rows.size() + 5;
2239+
v2u32 screenSize = driver->getScreenSize();
2240+
int tooltip_offset_x = m_btn_height;
2241+
int tooltip_offset_y = m_btn_height;
2242+
#ifdef __ANDROID__
2243+
tooltip_offset_x *= 3;
2244+
tooltip_offset_y = 0;
2245+
if (m_pointer.X > (s32)screenSize.X / 2)
2246+
tooltip_offset_x = (tooltip_offset_x + tooltip_width) * -1;
2247+
#endif
2248+
s32 tooltip_x = m_pointer.X + tooltip_offset_x;
2249+
s32 tooltip_y = m_pointer.Y + tooltip_offset_y;
2250+
if (tooltip_x + tooltip_width > (s32)screenSize.X)
2251+
tooltip_x = (s32)screenSize.X - tooltip_width - m_btn_height;
2252+
if (tooltip_y + tooltip_height > (s32)screenSize.Y)
2253+
tooltip_y = (s32)screenSize.Y - tooltip_height - m_btn_height;
22412254
m_tooltip_element->setRelativePosition(core::rect<s32>(
22422255
core::position2d<s32>(tooltip_x, tooltip_y),
22432256
core::dimension2d<s32>(tooltip_width, tooltip_height)));
@@ -2453,13 +2466,23 @@ void GUIFormSpecMenu::drawMenu()
24532466
if (m_old_tooltip != m_tooltips[iter->fname].tooltip) {
24542467
m_old_tooltip = m_tooltips[iter->fname].tooltip;
24552468
m_tooltip_element->setText(narrow_to_wide(m_tooltips[iter->fname].tooltip).c_str());
2456-
s32 tooltip_x = m_pointer.X + m_btn_height;
2457-
s32 tooltip_y = m_pointer.Y + m_btn_height;
2458-
s32 tooltip_width = m_tooltip_element->getTextWidth() + m_btn_height;
2459-
if (tooltip_x + tooltip_width > (s32)screenSize.X)
2460-
tooltip_x = (s32)screenSize.X - tooltip_width - m_btn_height;
24612469
std::vector<std::string> tt_rows = str_split(m_tooltips[iter->fname].tooltip, '\n');
2470+
s32 tooltip_width = m_tooltip_element->getTextWidth() + m_btn_height;
24622471
s32 tooltip_height = m_tooltip_element->getTextHeight() * tt_rows.size() + 5;
2472+
int tooltip_offset_x = m_btn_height;
2473+
int tooltip_offset_y = m_btn_height;
2474+
#ifdef __ANDROID__
2475+
tooltip_offset_x *= 3;
2476+
tooltip_offset_y = 0;
2477+
if (m_pointer.X > (s32)screenSize.X / 2)
2478+
tooltip_offset_x = (tooltip_offset_x + tooltip_width) * -1;
2479+
#endif
2480+
s32 tooltip_x = m_pointer.X + tooltip_offset_x;
2481+
s32 tooltip_y = m_pointer.Y + tooltip_offset_y;
2482+
if (tooltip_x + tooltip_width > (s32)screenSize.X)
2483+
tooltip_x = (s32)screenSize.X - tooltip_width - m_btn_height;
2484+
if (tooltip_y + tooltip_height > (s32)screenSize.Y)
2485+
tooltip_y = (s32)screenSize.Y - tooltip_height - m_btn_height;
24632486
m_tooltip_element->setRelativePosition(core::rect<s32>(
24642487
core::position2d<s32>(tooltip_x, tooltip_y),
24652488
core::dimension2d<s32>(tooltip_width, tooltip_height)));

0 commit comments

Comments
 (0)
Please sign in to comment.