From ff0e2a52457006492216881cd2e0a10ef8ede1c8 Mon Sep 17 00:00:00 2001 From: TheStonedTurtle Date: Mon, 11 May 2020 02:03:35 -0700 Subject: [PATCH] loot tracker: Fix "Show each kill separately" view --- .../plugins/loottracker/LootTrackerPanel.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java index 9550230422..015749793e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.loottracker; import static com.google.common.collect.Iterables.concat; +import com.google.common.collect.Lists; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; @@ -33,11 +34,12 @@ import java.awt.GridLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.function.Predicate; +import java.util.stream.Collectors; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; @@ -456,12 +458,16 @@ class LootTrackerPanel extends PluginPanel } else { - sessionRecords.stream() - .sorted(Collections.reverseOrder()) + // Loop in reverse insertion order so limiting includes most recent data + Lists.reverse(sessionRecords).stream() // filter records prior to limiting so that it is limited to the correct amount .filter(r -> !hideIgnoredItems || !plugin.isEventIgnored(r.getTitle())) .limit(MAX_LOOT_BOXES) - .forEach(this::buildBox); + // The box that is built last is first inside the UI. + // since we are looping in reverse order we need to use a data type that support reverse iterating + .collect(Collectors.toCollection(ArrayDeque::new)) + .descendingIterator() + .forEachRemaining(this::buildBox); } boxes.forEach(LootTrackerBox::rebuild);