Add explanation to touchscreen item tooltip code (#15607)

this explains some cryptic inventory code I wrote in #14029 / 771da80bbb85c9fa4f0dcf0f3d04f46a0a20239f
This commit is contained in:
grorp 2024-12-31 14:11:17 +01:00 committed by GitHub
parent 27c3aade5d
commit b50b619be7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -137,12 +137,26 @@ void GUIInventoryList::draw()
client, rotation_kind);
}
// Add hovering tooltip
// Add hovering tooltip. The tooltip disappears if any item is selected,
// including the currently hovered one.
bool show_tooltip = !item.empty() && hovering && !selected_item;
// Make it possible to see item tooltips on touchscreens
if (RenderingEngine::getLastPointerType() == PointerType::Touch) {
// Touchscreen users cannot hover over an item without selecting it.
// To allow touchscreen users to see item tooltips, we also show the
// tooltip if the item is selected and the finger is still on the
// source slot.
// The selected amount may be 0 in rare cases during "left-dragging"
// (used to distribute items evenly).
// In this case, the user doesn't see an item being dragged,
// so we don't show the tooltip.
// Note: `m_fs_menu->getSelectedAmount() != 0` below refers to the
// part of the selected item the user is dragging.
// `!item.empty()` would refer to the part of the selected item
// remaining in the source slot.
show_tooltip |= hovering && selected && m_fs_menu->getSelectedAmount() != 0;
}
if (show_tooltip) {
std::string tooltip = orig_item.getDescription(client->idef());
if (m_fs_menu->doTooltipAppendItemname())