From 4f4c502b1796ca70c3830ee7e563b8b4e16a8037 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 11 May 2022 12:57:05 -0400 Subject: [PATCH] overlay: make alt drag hotkey configurable --- .../client/config/RuneLiteConfig.java | 11 ++++ .../client/ui/overlay/OverlayRenderer.java | 53 +++++++++---------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java index f69ebce272..0f39d284ae 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java @@ -464,4 +464,15 @@ public interface RuneLiteConfig extends Config { return true; } + + @ConfigItem( + keyName = "dragHotkey", + name = "Drag Hotkey", + description = "Configures the hotkey used to drag UI elements around", + position = 52 + ) + default Keybind dragHotkey() + { + return Keybind.ALT; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index d92ef65e72..0f1476e5d0 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -36,7 +36,6 @@ import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Stroke; -import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.geom.AffineTransform; import java.util.Collection; @@ -60,19 +59,19 @@ import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.events.OverlayMenuClicked; -import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyManager; import net.runelite.client.input.MouseAdapter; import net.runelite.client.input.MouseManager; import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.JagexColors; import net.runelite.client.util.ColorUtil; +import net.runelite.client.util.HotkeyListener; import org.slf4j.Marker; import org.slf4j.MarkerFactory; @Singleton @Slf4j -public class OverlayRenderer extends MouseAdapter implements KeyListener +public class OverlayRenderer extends MouseAdapter { private static final Marker DEDUPLICATE = MarkerFactory.getMarker("DEDUPLICATE"); private static final int BORDER = 5; @@ -112,6 +111,8 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener private boolean isResizeable; private OverlayBounds emptySnapCorners, snapCorners; + private final HotkeyListener hotkeyListener; + @Inject private OverlayRenderer( final Client client, @@ -127,7 +128,27 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener this.runeLiteConfig = runeLiteConfig; this.clientUI = clientUI; this.eventBus = eventBus; - keyManager.registerKeyListener(this); + + this.hotkeyListener = new HotkeyListener(runeLiteConfig::dragHotkey) + { + @Override + public void hotkeyPressed() + { + inOverlayManagingMode = true; + } + + @Override + public void hotkeyReleased() + { + if (inOverlayManagingMode) + { + inOverlayManagingMode = false; + resetOverlayManagementMode(); + } + } + }; + + keyManager.registerKeyListener(hotkeyListener); mouseManager.registerMouseListener(this); eventBus.register(this); } @@ -692,30 +713,6 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener return mouseEvent; } - @Override - public void keyTyped(KeyEvent e) - { - } - - @Override - public void keyPressed(KeyEvent e) - { - if (e.isAltDown()) - { - inOverlayManagingMode = true; - } - } - - @Override - public void keyReleased(KeyEvent e) - { - if (!e.isAltDown() && inOverlayManagingMode) - { - inOverlayManagingMode = false; - resetOverlayManagementMode(); - } - } - private void safeRender(Client client, Overlay overlay, OverlayLayer layer, Graphics2D graphics, Point point) { if (!isResizeable && (layer == OverlayLayer.ABOVE_SCENE || layer == OverlayLayer.UNDER_WIDGETS))