diff --git a/enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/view/StatsMenu.java b/enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/view/StatsMenu.java index 5bb256682..f61cc7038 100644 --- a/enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/view/StatsMenu.java +++ b/enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/view/StatsMenu.java @@ -9,9 +9,12 @@ import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenu; +import javax.swing.SwingUtilities; import java.util.HashMap; import java.util.Map; +import static java.util.concurrent.CompletableFuture.runAsync; + public class StatsMenu extends AbstractEnigmaMenu { private final JCheckBoxMenuItem enableIcons = new JCheckBoxMenuItem(); private final JCheckBoxMenuItem includeSynthetic = new JCheckBoxMenuItem(); @@ -67,17 +70,17 @@ public void updateState(boolean jarOpen, ConnectionState state) { private void onEnableIconsClicked() { Config.main().features.enableClassTreeStatIcons.setValue(this.enableIcons.isSelected()); - this.gui.getController().regenerateAndUpdateStatIcons(); + this.updateIconsLater(); } private void onIncludeSyntheticClicked() { Config.main().stats.shouldIncludeSyntheticParameters.setValue(this.includeSynthetic.isSelected()); - this.gui.getController().regenerateAndUpdateStatIcons(); + this.updateIconsLater(); } private void onCountFallbackClicked() { Config.main().stats.shouldCountFallbackNames.setValue(this.countFallback.isSelected()); - this.gui.getController().regenerateAndUpdateStatIcons(); + this.updateIconsLater(); } private void onCheckboxClicked(StatType type) { @@ -89,6 +92,10 @@ private void onCheckboxClicked(StatType type) { Config.stats().includedStatTypes.value().remove(type); } - this.gui.getController().regenerateAndUpdateStatIcons(); + this.updateIconsLater(); + } + + private void updateIconsLater() { + SwingUtilities.invokeLater(() -> runAsync(() -> this.gui.getController().regenerateAndUpdateStatIcons())); } }