diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java index 06ae6c5de5e6bdd2291d28258f79aec16d9a37ff..157c51769d3e4f3d20fa16f257df73182a5c253e 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java @@ -83,18 +83,22 @@ public class JadxSettingsWindow extends JDialog { JButton saveBtn = new JButton(NLS.str("preferences.save")); saveBtn.addActionListener(event -> { settings.sync(); - if (needReload) { - mainWindow.reOpenFile(); - } - if (!settings.getLangLocale().equals(prevLang)) { - JOptionPane.showMessageDialog( - this, - NLS.str("msg.language_changed", settings.getLangLocale()), - NLS.str("msg.language_changed_title", settings.getLangLocale()), - JOptionPane.INFORMATION_MESSAGE - ); - } - dispose(); + enableComponents(this, false); + + SwingUtilities.invokeLater(() -> { + if (needReload) { + mainWindow.reOpenFile(); + } + if (!settings.getLangLocale().equals(prevLang)) { + JOptionPane.showMessageDialog( + this, + NLS.str("msg.language_changed", settings.getLangLocale()), + NLS.str("msg.language_changed_title", settings.getLangLocale()), + JOptionPane.INFORMATION_MESSAGE + ); + } + dispose(); + }); }); JButton cancelButton = new JButton(NLS.str("preferences.cancel")); cancelButton.addActionListener(event -> { @@ -139,6 +143,15 @@ public class JadxSettingsWindow extends JDialog { getRootPane().setDefaultButton(saveBtn); } + private static void enableComponents(Container container, boolean enable) { + for (Component component : container.getComponents()) { + if (component instanceof Container) { + enableComponents((Container) component, enable); + } + component.setEnabled(enable); + } + } + private SettingsGroup makeDeobfuscationGroup() { JCheckBox deobfOn = new JCheckBox(); deobfOn.setSelected(settings.isDeobfuscationOn());