restore menu entries after open/close widget

This commit is contained in:
DESKTOP-G1DDN84\Denni
2018-03-09 07:53:40 +01:00
committed by Adam
parent 4893e11740
commit 2e21f1e56a

View File

@@ -53,6 +53,7 @@ import net.runelite.api.Setting;
import net.runelite.api.Skill;
import net.runelite.api.SpritePixels;
import net.runelite.api.Varbits;
import net.runelite.api.WidgetNode;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.GameStateChanged;
@@ -61,9 +62,11 @@ import net.runelite.api.events.MapRegionChanged;
import net.runelite.api.events.PlayerMenuOptionsChanged;
import net.runelite.api.events.ResizeableChanged;
import net.runelite.api.events.VarbitChanged;
import net.runelite.api.mixins.Copy;
import net.runelite.api.mixins.FieldHook;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
@@ -477,6 +480,35 @@ public abstract class RSClientMixin implements RSClient
}
}
@Copy("closeWidget")
public static void rs$closeWidget(WidgetNode widget, boolean b)
{
throw new RuntimeException();
}
@Replace("closeWidget")
public static void rl$closeWidget(WidgetNode widget, boolean b)
{
MenuEntry[] entries = client.getMenuEntries();
rs$closeWidget(widget, b);
client.setMenuEntries(entries);
}
@Copy("openWidget")
public static WidgetNode rs$openWidget(int parentHash, int widgetId, int autoClose)
{
throw new RuntimeException();
}
@Replace("openWidget")
public static WidgetNode rl$openWidget(int parentHash, int widgetId, int autoClose)
{
MenuEntry[] entries = client.getMenuEntries();
WidgetNode widgetNode = rs$openWidget(parentHash, widgetId, autoClose);
client.setMenuEntries(entries);
return widgetNode;
}
@FieldHook("skillExperiences")
@Inject
public static void experiencedChanged(int idx)