Skip to content

Commit

Permalink
Change menuOpened from FieldHook to Hook
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
kamielvf committed Apr 17, 2018
1 parent da1644a commit 7300c7a
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
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;
Expand Down Expand Up @@ -440,4 +441,11 @@ public static void postItemComposition(ItemComposition itemComposition)
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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@
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;
Expand Down Expand Up @@ -766,20 +765,6 @@ public static void clanMemberManagerChanged(int idx)
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()
Expand Down
1 change: 1 addition & 0 deletions runescape-client/src/main/java/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -6069,6 +6069,7 @@ final boolean method1267() {
garbageValue = "-1938426547"
)
@Export("openMenu")
@Hook("menuOpened")
final void openMenu(int var1, int var2) {
int var3 = MessageNode.fontBold12.getTextWidth("Choose Option");

Expand Down

0 comments on commit 7300c7a

Please sign in to comment.