overlay: make alt drag hotkey configurable

This commit is contained in:
Adam
2022-05-11 12:57:05 -04:00
parent 5c98c47803
commit 4f4c502b17
2 changed files with 36 additions and 28 deletions

View File

@@ -464,4 +464,15 @@ public interface RuneLiteConfig extends Config
{ {
return true; 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;
}
} }

View File

@@ -36,7 +36,6 @@ import java.awt.Point;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.RenderingHints; import java.awt.RenderingHints;
import java.awt.Stroke; import java.awt.Stroke;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.geom.AffineTransform; import java.awt.geom.AffineTransform;
import java.util.Collection; 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.EventBus;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.OverlayMenuClicked; import net.runelite.client.events.OverlayMenuClicked;
import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseAdapter; import net.runelite.client.input.MouseAdapter;
import net.runelite.client.input.MouseManager; import net.runelite.client.input.MouseManager;
import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.ClientUI;
import net.runelite.client.ui.JagexColors; import net.runelite.client.ui.JagexColors;
import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.HotkeyListener;
import org.slf4j.Marker; import org.slf4j.Marker;
import org.slf4j.MarkerFactory; import org.slf4j.MarkerFactory;
@Singleton @Singleton
@Slf4j @Slf4j
public class OverlayRenderer extends MouseAdapter implements KeyListener public class OverlayRenderer extends MouseAdapter
{ {
private static final Marker DEDUPLICATE = MarkerFactory.getMarker("DEDUPLICATE"); private static final Marker DEDUPLICATE = MarkerFactory.getMarker("DEDUPLICATE");
private static final int BORDER = 5; private static final int BORDER = 5;
@@ -112,6 +111,8 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
private boolean isResizeable; private boolean isResizeable;
private OverlayBounds emptySnapCorners, snapCorners; private OverlayBounds emptySnapCorners, snapCorners;
private final HotkeyListener hotkeyListener;
@Inject @Inject
private OverlayRenderer( private OverlayRenderer(
final Client client, final Client client,
@@ -127,7 +128,27 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
this.runeLiteConfig = runeLiteConfig; this.runeLiteConfig = runeLiteConfig;
this.clientUI = clientUI; this.clientUI = clientUI;
this.eventBus = eventBus; 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); mouseManager.registerMouseListener(this);
eventBus.register(this); eventBus.register(this);
} }
@@ -692,30 +713,6 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
return mouseEvent; 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) private void safeRender(Client client, Overlay overlay, OverlayLayer layer, Graphics2D graphics, Point point)
{ {
if (!isResizeable && (layer == OverlayLayer.ABOVE_SCENE || layer == OverlayLayer.UNDER_WIDGETS)) if (!isResizeable && (layer == OverlayLayer.ABOVE_SCENE || layer == OverlayLayer.UNDER_WIDGETS))