From 47ba47b06f74187838862c4d3ad1203decc01c46 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 29 Jun 2014 19:36:18 +0000 Subject: [PATCH] Fix so music doesn't change when opening preferences page the first time --- .../screens/home/settings/CSubmenuPreferences.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java index 71d3f59b034..4d84c45a041 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java @@ -42,6 +42,7 @@ public enum CSubmenuPreferences implements ICDoc { private VSubmenuPreferences view; private ForgePreferences prefs; + private boolean updating; private final List> lstControls = new ArrayList>(); @@ -59,6 +60,8 @@ public enum CSubmenuPreferences implements ICDoc { view.getCbDevMode().addItemListener(new ItemListener() { @Override public void itemStateChanged(final ItemEvent arg0) { + if (updating) { return; } + final boolean toggle = view.getCbDevMode().isSelected(); prefs.setPref(FPref.DEV_MODE_ENABLED, String.valueOf(toggle)); ForgePreferences.DEV_MODE = toggle; @@ -70,6 +73,8 @@ public enum CSubmenuPreferences implements ICDoc { view.getCbEnableMusic().addItemListener(new ItemListener() { @Override public void itemStateChanged(final ItemEvent arg0) { + if (updating) { return; } + final boolean toggle = view.getCbEnableMusic().isSelected(); prefs.setPref(FPref.UI_ENABLE_MUSIC, String.valueOf(toggle)); prefs.save(); @@ -108,6 +113,8 @@ public enum CSubmenuPreferences implements ICDoc { kv.getKey().addItemListener(new ItemListener() { @Override public void itemStateChanged(final ItemEvent arg0) { + if (updating) { return; } + prefs.setPref(kv.getValue(), String.valueOf(kv.getKey().isSelected())); prefs.save(); } @@ -167,6 +174,7 @@ public enum CSubmenuPreferences implements ICDoc { */ @Override public void update() { + updating = true; //prevent itemStateChanged causing prefs to be saved or other logic occurring while updating values this.view = VSubmenuPreferences.SINGLETON_INSTANCE; this.prefs = FModel.getPreferences(); @@ -183,6 +191,8 @@ public enum CSubmenuPreferences implements ICDoc { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { view.getCbRemoveSmall().requestFocusInWindow(); } }); + + updating = false; } /* (non-Javadoc)