Make it possible again to see item tooltips on Android (#14029)

This change is a quick fix so that item tooltips show again on Android.
This commit is contained in:
grorp 2023-11-25 17:07:07 +01:00 committed by GitHub
parent 0f3ac7c956
commit 771da80bbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 8 deletions

@ -3643,7 +3643,7 @@ void GUIFormSpecMenu::drawMenu()
NULL, m_client, IT_ROT_HOVERED); NULL, m_client, IT_ROT_HOVERED);
} }
/* TODO find way to show tooltips on touchscreen */ // On touchscreens, m_pointer is set by GUIModalMenu::preprocessEvent instead.
#ifndef HAVE_TOUCHSCREENGUI #ifndef HAVE_TOUCHSCREENGUI
m_pointer = RenderingEngine::get_raw_device()->getCursorControl()->getPosition(); m_pointer = RenderingEngine::get_raw_device()->getCursorControl()->getPosition();
#endif #endif

@ -99,6 +99,7 @@ void GUIInventoryList::draw()
(i / m_geom.X) * m_slot_spacing.Y); (i / m_geom.X) * m_slot_spacing.Y);
core::rect<s32> rect = imgrect + base_pos + p; core::rect<s32> rect = imgrect + base_pos + p;
ItemStack item = ilist->getItem(item_i); ItemStack item = ilist->getItem(item_i);
ItemStack orig_item = item;
bool selected = selected_item bool selected = selected_item
&& m_invmgr->getInventory(selected_item->inventoryloc) == inv && m_invmgr->getInventory(selected_item->inventoryloc) == inv
@ -147,13 +148,19 @@ void GUIInventoryList::draw()
// Draw item stack // Draw item stack
drawItemStack(driver, m_font, item, rect, &AbsoluteClippingRect, drawItemStack(driver, m_font, item, rect, &AbsoluteClippingRect,
client, rotation_kind); client, rotation_kind);
// Add hovering tooltip
if (hovering && !selected_item) {
std::string tooltip = item.getDescription(client->idef());
if (m_fs_menu->doTooltipAppendItemname())
tooltip += "\n[" + item.name + "]";
m_fs_menu->addHoveredItemTooltip(tooltip);
} }
// Add hovering tooltip
bool show_tooltip = !item.empty() && hovering && !selected_item;
#ifdef HAVE_TOUCHSCREENGUI
// Make it possible to see item tooltips on touchscreens
show_tooltip |= hovering && selected && m_fs_menu->getSelectedAmount() != 0;
#endif
if (show_tooltip) {
std::string tooltip = orig_item.getDescription(client->idef());
if (m_fs_menu->doTooltipAppendItemname())
tooltip += "\n[" + orig_item.name + "]";
m_fs_menu->addHoveredItemTooltip(tooltip);
} }
} }