From 49965affe15de42e38fb009a851025f3de14d5db Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Thu, 24 Jan 2019 17:03:45 +0100 Subject: [PATCH] Add option to require shift for overlay menus Enabled by default. This was on original PR review and was discussed in Discord. It is better to just use what we already use for adding our custom entries at other places, and there is possibility that overlays will have a lot of right click menus in future, so making it require shift is most sane option. Signed-off-by: Tomas Slusny --- .../runelite/client/config/RuneLiteConfig.java | 17 ++++++++++++++--- .../client/ui/overlay/OverlayRenderer.java | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 3 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 fdf92e0548..546f7e77bc 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 @@ -229,11 +229,22 @@ public interface RuneLiteConfig extends Config return FontType.REGULAR; } + @ConfigItem( + keyName = "menuEntryShift", + name = "Require Shift for overlay menu", + description = "Overlay right-click menu will require shift to be added", + position = 33 + ) + default boolean menuEntryShift() + { + return true; + } + @ConfigItem( keyName = "infoBoxVertical", name = "Display infoboxes vertically", description = "Toggles the infoboxes to display vertically", - position = 33 + position = 40 ) default boolean infoBoxVertical() { @@ -244,7 +255,7 @@ public interface RuneLiteConfig extends Config keyName = "infoBoxWrap", name = "Infobox wrap count", description = "Configures the amount of infoboxes shown before wrapping", - position = 34 + position = 41 ) default int infoBoxWrap() { @@ -255,7 +266,7 @@ public interface RuneLiteConfig extends Config keyName = "infoBoxSize", name = "Infobox size (px)", description = "Configures the size of each infobox in pixels", - position = 35 + position = 42 ) default int infoBoxSize() { 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 7c290727bb..12de03d15d 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 @@ -75,6 +75,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener private final Point mousePosition = new Point(); private Overlay movedOverlay; private boolean inOverlayDraggingMode; + private boolean inMenuEntryMode; private MenuEntry[] menuEntries; // Overlay state validation @@ -106,6 +107,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener if (!event.isFocused()) { inOverlayDraggingMode = false; + inMenuEntryMode = false; menuEntries = null; } } @@ -118,6 +120,11 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener return; } + if (!inMenuEntryMode && runeLiteConfig.menuEntryShift()) + { + return; + } + if (client.isMenuOpen()) { return; @@ -401,6 +408,11 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener { inOverlayDraggingMode = true; } + + if (e.isShiftDown() && runeLiteConfig.menuEntryShift()) + { + inMenuEntryMode = true; + } } @Override @@ -410,6 +422,11 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener { inOverlayDraggingMode = false; } + + if (!e.isShiftDown()) + { + inMenuEntryMode = false; + } } private void safeRender(Client client, Overlay overlay, OverlayLayer layer, Graphics2D graphics, Point point)