From 935ce60791b6bd1814d1025b959cdf1ae4bb558d Mon Sep 17 00:00:00 2001 From: Max Weber Date: Sat, 26 Jan 2019 07:45:01 -0700 Subject: [PATCH 1/3] mixins: Force RUNELITE_OVERLAY menuops to not be left click This is similar to how you cannot left click the remove placeholder button --- .../net/runelite/mixins/RSClientMixin.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 991f9a3a43..a9234e73de 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -1406,4 +1406,28 @@ public abstract class RSClientMixin implements RSClient { client.getCallbacks().post(new ClientTick()); } + + @Copy("shouldLeftClickOpenMenu") + boolean rs$shouldLeftClickOpenMenu() + { + throw new RuntimeException(); + } + + @Replace("shouldLeftClickOpenMenu") + boolean rl$shouldLeftClickOpenMenu() + { + if (rs$shouldLeftClickOpenMenu()) + { + return true; + } + + int len = getMenuOptionCount(); + if (len > 0) + { + int type = getMenuTypes()[len - 1]; + return type == MenuAction.RUNELITE_OVERLAY.getId(); + } + + return false; + } } \ No newline at end of file From 5b9c3cf51161aef5b6b5895382ea9fb5688d2e5f Mon Sep 17 00:00:00 2001 From: Max Weber Date: Sat, 26 Jan 2019 07:45:47 -0700 Subject: [PATCH 2/3] mousehighlight: Don't show tooltips for right click only menuops --- .../plugins/mousehighlight/MouseHighlightOverlay.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightOverlay.java index 03cf7f2d1a..e7e12580cd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightOverlay.java @@ -29,6 +29,7 @@ import java.awt.Dimension; import java.awt.Graphics2D; import javax.inject.Inject; import net.runelite.api.Client; +import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; import net.runelite.api.VarClientInt; import net.runelite.api.widgets.Widget; @@ -72,6 +73,13 @@ class MouseHighlightOverlay extends Overlay MenuEntry menuEntry = menuEntries[last]; String target = menuEntry.getTarget(); String option = menuEntry.getOption(); + int type = menuEntry.getType(); + + if (type == MenuAction.RUNELITE_OVERLAY.getId() || type == MenuAction.EXAMINE_ITEM_BANK_EQ.getId()) + { + // These are always right click only + return null; + } if (Strings.isNullOrEmpty(option)) { From 001ac540e74278077b8450fc37132127e01ee35b Mon Sep 17 00:00:00 2001 From: Max Weber Date: Sat, 26 Jan 2019 07:55:27 -0700 Subject: [PATCH 3/3] mixins: Don't clobber left click forced menuops --- .../src/main/java/net/runelite/api/MenuEntry.java | 8 +++++++- .../src/main/java/net/runelite/mixins/RSClientMixin.java | 4 ++++ .../src/main/java/net/runelite/rs/api/RSClient.java | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java index c15a44f359..6d9cc751f4 100644 --- a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java +++ b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java @@ -59,5 +59,11 @@ public class MenuEntry * A second additional parameter for the action. */ private int param1; - + /** + * If this field is true and you have single mouse button on and this entry is + * the top entry the right click menu will not be opened when you left click + * + * This is used for shift click + */ + private boolean forceLeftClick; } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index a9234e73de..0c99443490 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -546,6 +546,7 @@ public abstract class RSClientMixin implements RSClient int[] menuTypes = getMenuTypes(); int[] params0 = getMenuActionParams0(); int[] params1 = getMenuActionParams1(); + boolean[] leftClick = getMenuForceLeftClick(); MenuEntry[] entries = new MenuEntry[count]; for (int i = 0; i < count; ++i) @@ -557,6 +558,7 @@ public abstract class RSClientMixin implements RSClient entry.setType(menuTypes[i]); entry.setParam0(params0[i]); entry.setParam1(params1[i]); + entry.setForceLeftClick(leftClick[i]); } return entries; } @@ -572,6 +574,7 @@ public abstract class RSClientMixin implements RSClient int[] menuTypes = getMenuTypes(); int[] params0 = getMenuActionParams0(); int[] params1 = getMenuActionParams1(); + boolean[] leftClick = getMenuForceLeftClick(); for (MenuEntry entry : entries) { @@ -581,6 +584,7 @@ public abstract class RSClientMixin implements RSClient menuTypes[count] = entry.getType(); params0[count] = entry.getParam0(); params1[count] = entry.getParam1(); + leftClick[count] = entry.isForceLeftClick(); ++count; } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index 2799198296..04ac90d398 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -307,6 +307,9 @@ public interface RSClient extends RSGameEngine, Client @Import("menuActionParams1") int[] getMenuActionParams1(); + @Import("menuForceLeftClick") + boolean[] getMenuForceLeftClick(); + @Import("worldList") @Override RSWorld[] getWorldList();