diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java index f4b7b576465..02882073078 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java @@ -39,7 +39,6 @@ public class PickChoiceDialog extends MageDialog { UUID gameId; java.util.List allItems = new ArrayList<>(); - DefaultListModel dataModel = new DefaultListModel<>(); final private static String HTML_HEADERS_TEMPLATE = "
%s
"; @@ -58,7 +57,7 @@ public class PickChoiceDialog extends MageDialog { int newHeight = GUISizeHelper.guiSizeScale(this.getSize().height, guiScale); this.setSize(newWidth, newHeight); - this.listChoices.setModel(dataModel); + this.listChoices.setModel(new DefaultListModel()); this.setModal(true); } @@ -372,12 +371,15 @@ public class PickChoiceDialog extends MageDialog { } filter = filter.toLowerCase(Locale.ENGLISH); - this.dataModel.clear(); + // make changes to new model instead current, so it can help with GUI freeze on fast text deleting + // https://github.com/magefree/mage/issues/8671 + DefaultListModel newModel = new DefaultListModel<>(); for (KeyValueItem item : this.allItems) { if (!choice.isSearchEnabled() || item.getValue().toLowerCase(Locale.ENGLISH).contains(filter)) { - this.dataModel.addElement(item); + newModel.addElement(item); } } + this.listChoices.setModel(newModel); } private void setMessageText(MageEditorPane editor, String text) {