diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragConfig.java index d685fe6573..6fa7c3871a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragConfig.java @@ -53,4 +53,15 @@ public interface AntiDragConfig extends Config { return true; } + + @ConfigItem( + keyName = "disableOnCtrl", + name = "Disable On Control Pressed", + description = "Configures whether to ignore the delay while holding control.", + position = 3 + ) + default boolean disableOnCtrl() + { + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java index 8a6459382a..5f55e44a04 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java @@ -70,7 +70,8 @@ public class AntiDragPlugin extends Plugin implements KeyListener private KeyManager keyManager; private boolean inPvp; - private boolean held; + private boolean shiftHeld; + private boolean ctrlHeld; @Provides AntiDragConfig getConfig(ConfigManager configManager) @@ -112,20 +113,30 @@ public class AntiDragPlugin extends Plugin implements KeyListener @Override public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_SHIFT && (inPvp || config.onShiftOnly())) + if (e.getKeyCode() == KeyEvent.VK_CONTROL && config.disableOnCtrl() && !(inPvp || config.onShiftOnly())) + { + resetDragDelay(); + ctrlHeld = true; + } + else if (e.getKeyCode() == KeyEvent.VK_SHIFT && (inPvp || config.onShiftOnly())) { setDragDelay(); - held = true; + shiftHeld = true; } } @Override public void keyReleased(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_SHIFT && (inPvp || config.onShiftOnly())) + if (e.getKeyCode() == KeyEvent.VK_CONTROL && config.disableOnCtrl() && !(inPvp || config.onShiftOnly())) + { + setDragDelay(); + ctrlHeld = false; + } + else if (e.getKeyCode() == KeyEvent.VK_SHIFT && (inPvp || config.onShiftOnly())) { resetDragDelay(); - held = false; + shiftHeld = false; } } @@ -134,9 +145,14 @@ public class AntiDragPlugin extends Plugin implements KeyListener { if (event.getGroup().equals(CONFIG_GROUP)) { + if (!config.disableOnCtrl()) + { + ctrlHeld = false; + } + if (config.onShiftOnly() || inPvp) { - held = false; + shiftHeld = false; clientThread.invoke(this::resetDragDelay); } else @@ -172,7 +188,8 @@ public class AntiDragPlugin extends Plugin implements KeyListener { if (!focusChanged.isFocused()) { - held = false; + shiftHeld = false; + ctrlHeld = false; clientThread.invoke(this::resetDragDelay); } else if (!inPvp && !config.onShiftOnly()) @@ -184,7 +201,7 @@ public class AntiDragPlugin extends Plugin implements KeyListener @Subscribe public void onWidgetLoaded(WidgetLoaded widgetLoaded) { - if (widgetLoaded.getGroupId() == WidgetID.BANK_GROUP_ID && (!config.onShiftOnly() || held)) + if (widgetLoaded.getGroupId() == WidgetID.BANK_GROUP_ID && (!config.onShiftOnly() || shiftHeld) && !ctrlHeld) { setBankDragDelay(config.dragDelay()); }