Change menuOpened from FieldHook to Hook

This fixes an issue which occurs when the MenuEntries array is modified after the client has calculated the menu's bounds and position. Hooking to `openMenu`  will allow us to modify the MenuEntries array before the menu's bounds and its position is calculated.
This commit is contained in:
Kamiel
2018-04-17 04:30:01 +02:00
parent c95f788c26
commit b72c3b234c
2 changed files with 8 additions and 15 deletions

View File

@@ -54,6 +54,7 @@ import net.runelite.api.events.ActorDeath;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.MenuOpened;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.events.PostItemComposition;
import net.runelite.api.events.ProjectileMoved;
@@ -440,4 +441,11 @@ public class Hooks
event.setItemComposition(itemComposition);
eventBus.post(event);
}
public static void menuOpened(Client client, int var1, int var2)
{
MenuOpened event = new MenuOpened();
event.setMenuEntries(client.getMenuEntries());
eventBus.post(event);
}
}

View File

@@ -65,7 +65,6 @@ import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GrandExchangeOfferChanged;
import net.runelite.api.events.MapRegionChanged;
import net.runelite.api.events.MenuOpened;
import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned;
import net.runelite.api.events.PlayerDespawned;
@@ -766,20 +765,6 @@ public abstract class RSClientMixin implements RSClient
eventBus.post(new ClanChanged(client.getClanMemberManager() != null));
}
@FieldHook("isMenuOpen")
@Inject
public static void menuOpened(int opened)
{
if (!client.isMenuOpen())
{
return;
}
MenuOpened event = new MenuOpened();
event.setMenuEntries(client.getMenuEntries());
eventBus.post(event);
}
@Inject
@Override
public boolean hasHintArrow()