From 001ac540e74278077b8450fc37132127e01ee35b Mon Sep 17 00:00:00 2001 From: Max Weber Date: Sat, 26 Jan 2019 07:55:27 -0700 Subject: [PATCH] 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();