From cc2ed2311bec808193fbae382cadf4a973f64b20 Mon Sep 17 00:00:00 2001 From: Jacob Lindelof Date: Tue, 2 Jun 2020 21:45:01 -0700 Subject: [PATCH] antidrag: Add option to use CTRL to disable delay This allows users who enable the plugin to temporarily allow item dragging to reorganize their inventory without fully toggling the plugin off and on again. Co-authored-by: Jordan --- .../plugins/antidrag/AntiDragConfig.java | 11 +++++++ .../plugins/antidrag/AntiDragPlugin.java | 33 ++++++++++++++----- 2 files changed, 36 insertions(+), 8 deletions(-) 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()); }