Inventory: skip redundant stack movement

The list of dragged stacks includes the source stack, which
however does not need to be moved onto itself.
This is an optimization.
This commit is contained in:
SmallJoker 2023-08-27 13:10:24 +02:00 committed by sfan5
parent 0ba899e239
commit bf9f831cb2
2 changed files with 7 additions and 1 deletions

@ -4447,6 +4447,12 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
if (m_left_drag_stacks.size() > 1) {
// Finalize the left-dragging
for (auto &ds : m_left_drag_stacks) {
if (ds.first == *m_selected_item) {
// This entry is needed to properly calculate the stack sizes.
// The stack already exists, hence no further action needed here.
continue;
}
// Check how many items we should move to this slot,
// it may be less than the full split
Inventory *inv_to = m_invmgr->getInventory(ds.first.inventoryloc);

@ -43,7 +43,7 @@ class GUIInventoryList : public gui::IGUIElement
{
}
bool operator==(const ItemSpec& other)
bool operator==(const ItemSpec& other) const
{
return inventoryloc == other.inventoryloc &&
listname == other.listname && i == other.i;