From a72891fbb091440711cbbf95db7a433d641fcc6c Mon Sep 17 00:00:00 2001 From: peterbell10 Date: Mon, 15 Jan 2018 11:35:27 +0000 Subject: cWindow: Fix slot area priority when double click stacking. (#4086) Fixes #4084 --- src/UI/Window.cpp | 38 +++++--------------------------------- 1 file changed, 5 insertions(+), 33 deletions(-) (limited to 'src/UI/Window.cpp') diff --git a/src/UI/Window.cpp b/src/UI/Window.cpp index 55df04798..629db12c2 100644 --- a/src/UI/Window.cpp +++ b/src/UI/Window.cpp @@ -421,43 +421,15 @@ void cWindow::DistributeStackToAreas(cItem & a_ItemStack, cPlayer & a_Player, cS bool cWindow::CollectItemsToHand(cItem & a_Dragging, cSlotArea & a_Area, cPlayer & a_Player, bool a_CollectFullStacks) { - // First ask the slot areas from a_Area till the end of list: - bool ShouldCollect = false; - for (cSlotAreas::iterator itr = m_SlotAreas.begin(), end = m_SlotAreas.end(); itr != end; ++itr) + // Ask to collect items from each slot area in order: + for (auto Area : m_SlotAreas) { - if (&a_Area == *itr) - { - ShouldCollect = true; - } - if (!ShouldCollect) - { - continue; - } - if ((*itr)->CollectItemsToHand(a_Dragging, a_Player, a_CollectFullStacks)) - { - // a_Dragging is full - return true; - } - } - - // a_Dragging still not full, ask slot areas before a_Area in the list: - for (cSlotAreas::iterator itr = m_SlotAreas.begin(), end = m_SlotAreas.end(); itr != end; ++itr) - { - if (*itr == &a_Area) - { - // All areas processed - return false; - } - if ((*itr)->CollectItemsToHand(a_Dragging, a_Player, a_CollectFullStacks)) + if (Area->CollectItemsToHand(a_Dragging, a_Player, a_CollectFullStacks)) { - // a_Dragging is full - return true; + return true; // a_Dragging is full } } - // Shouldn't reach here - // a_Area is expected to be part of m_SlotAreas[], so the "return false" in the loop above should have returned already - ASSERT(!"This branch should not be reached"); - return false; + return false; // All areas processed } -- cgit v1.2.3