From 83e38d8140b965f44adbd70bfc5f620a8ceef8b7 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 29 Mar 2018 07:57:58 -0400 Subject: [PATCH] mixins: move widget open event to loadWidget --- .../net/runelite/api/events/WidgetOpened.java | 2 -- .../net/runelite/mixins/RSClientMixin.java | 31 +++++++++++-------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetOpened.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetOpened.java index 8ad22dead2..678d7aa648 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/WidgetOpened.java +++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetOpened.java @@ -29,7 +29,5 @@ import lombok.Data; @Data public class WidgetOpened { - private int parentId; private int groupId; - private int autoClose; } 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 1b716d8a28..8abe111995 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -73,6 +73,8 @@ import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Shadow; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; +import static net.runelite.api.widgets.WidgetInfo.TO_CHILD; +import static net.runelite.api.widgets.WidgetInfo.TO_GROUP; import static net.runelite.client.callback.Hooks.eventBus; import net.runelite.rs.api.RSClanMemberManager; import net.runelite.rs.api.RSClient; @@ -507,25 +509,28 @@ public abstract class RSClientMixin implements RSClient client.setMenuEntries(entries); } - @Copy("openWidget") - public static WidgetNode rs$openWidget(int parentId, int groupId, int autoClose) + @Copy("loadWidget") + public static boolean rs$loadWidget(int widgetId) { throw new RuntimeException(); } - @Replace("openWidget") - public static WidgetNode rl$openWidget(int parentId, int groupId, int autoClose) + @Replace("loadWidget") + public static boolean rl$loadWidget(int widgetId) { - MenuEntry[] entries = client.getMenuEntries(); - WidgetNode widgetNode = rs$openWidget(parentId, groupId, autoClose); - client.setMenuEntries(entries); + RSWidget[][] widgets = client.getWidgets(); + boolean loadedBefore = widgets != null && widgets[widgetId] != null; - WidgetOpened event = new WidgetOpened(); - event.setParentId(parentId); - event.setGroupId(groupId); - event.setAutoClose(autoClose); - eventBus.post(event); - return widgetNode; + boolean loaded = rs$loadWidget(widgetId); + + if (!loadedBefore && loaded) + { + WidgetOpened event = new WidgetOpened(); + event.setGroupId(widgetId); + eventBus.post(event); + } + + return loaded; } @FieldHook("skillExperiences")