diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java index 2af95af66d..11b3f6c321 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java @@ -54,4 +54,8 @@ public @interface ConfigItem String hide() default ""; String parent() default ""; + + String enabledBy() default ""; + + String disabledBy() default ""; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java index 34d6dff900..0601438c4c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java @@ -850,10 +850,8 @@ public class ConfigPanel extends PluginPanel } configManager.setConfiguration(cd.getGroup().value(), cig.getGroup() + "_collapse", collapse); - - int scrollBarPosition = scrollPane.getVerticalScrollBar().getValue(); - openGroupConfigPanel(listItem, config, cd); - scrollPane.getVerticalScrollBar().setValue(scrollBarPosition); + + reloadPluginlist(listItem, config, cd); } } @@ -891,10 +889,22 @@ public class ConfigPanel extends PluginPanel if (itemHide.contains(cid.getItem().keyName())) { // If another options visibility changes depending on the value of this checkbox, then render the entire menu again - int scrollBarPosition = scrollPane.getVerticalScrollBar().getValue(); - openGroupConfigPanel(listItem, config, cd); - scrollPane.getVerticalScrollBar().setValue(scrollBarPosition); - return; + + reloadPluginlist(listItem, config, cd); + } + } + + if (checkbox.isSelected()) + { + if (cid2.getItem().enabledBy().contains(cid.getItem().keyName())) + { + configManager.setConfiguration(cd.getGroup().value(), cid2.getItem().keyName(), "true"); + reloadPluginlist(listItem, config, cd); + } + else if (cid2.getItem().disabledBy().contains(cid.getItem().keyName())) + { + configManager.setConfiguration(cd.getGroup().value(), cid2.getItem().keyName(), "false"); + reloadPluginlist(listItem, config, cd); } } } @@ -1029,4 +1039,11 @@ public class ConfigPanel extends PluginPanel } } + + private void reloadPluginlist(PluginListItem listItem, Config config, ConfigDescriptor cd) + { + int scrollBarPosition = scrollPane.getVerticalScrollBar().getValue(); + openGroupConfigPanel(listItem, config, cd); + scrollPane.getVerticalScrollBar().setValue(scrollBarPosition); + } }