From 1e1a16a4f4d86f548bdae7ec222577b3a995718d Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 9 May 2018 18:23:25 +0300 Subject: [PATCH 1/2] - Do not go through the process of adding items to a card pool if it's already infinite (fixes slowdown when removing a card from the deck in the Constructed deck editor) --- .../src/main/java/forge/itemmanager/ItemManager.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java index 590c236ccb2..1f6e9c2efea 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java @@ -719,6 +719,9 @@ public abstract class ItemManager extends JPanel implem */ @Override public void addItem(final T item, final int qty) { + if (this.isInfinite()) { + return; + } this.pool.add(item, qty); if (this.isUnfiltered()) { this.model.addItem(item, qty); @@ -736,6 +739,9 @@ public abstract class ItemManager extends JPanel implem */ @Override public void addItems(final Iterable> itemsToAdd) { + if (this.isInfinite()) { + return; + } this.pool.addAll(itemsToAdd); if (this.isUnfiltered()) { this.model.addItems(itemsToAdd); From 816660f80dd897ae8dc9e6871d77b15d0cabaa37 Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 9 May 2018 18:27:00 +0300 Subject: [PATCH 2/2] - To avoid possibly unexpected behavior, check to ensure that the infinite pool already contains all the items requested. --- .../src/main/java/forge/itemmanager/ItemManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java index 1f6e9c2efea..cd1da658c16 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java @@ -40,6 +40,7 @@ import javax.swing.event.ListSelectionListener; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; +import com.google.common.collect.Lists; import net.miginfocom.swing.MigLayout; import com.google.common.base.Predicate; @@ -719,7 +720,7 @@ public abstract class ItemManager extends JPanel implem */ @Override public void addItem(final T item, final int qty) { - if (this.isInfinite()) { + if (this.isInfinite() && this.model.getOrderedList().contains(item)) { return; } this.pool.add(item, qty); @@ -739,7 +740,7 @@ public abstract class ItemManager extends JPanel implem */ @Override public void addItems(final Iterable> itemsToAdd) { - if (this.isInfinite()) { + if (this.isInfinite() && this.model.getOrderedList().containsAll(Lists.newArrayList(itemsToAdd))) { return; } this.pool.addAll(itemsToAdd);