fix(context): provide addon to submenus

This commit is contained in:
Anna 2021-06-24 04:30:31 -04:00
parent 66776063c0
commit 56d3f7f88a
1 changed files with 13 additions and 2 deletions

View File

@ -279,6 +279,16 @@ namespace XivCommon.Functions.ContextMenu {
return Encoding.UTF8.GetString(Util.ReadTerminated(parentAddon + 8));
}
private unsafe IntPtr GetAddonFromAgent(IntPtr agent) {
var addonId = *(byte*) (agent + 0x20);
if (addonId == 0) {
return IntPtr.Zero;
}
var stage = (AtkStage*) this.Functions.GetAtkStageSingleton();
return this._getAddonByInternalId((IntPtr) stage->RaptureAtkUnitManager, addonId);
}
private unsafe (uint actorId, uint contentIdLower, SeString? text, ushort actorWorld) GetAgentInfo(IntPtr agent) {
var actorId = *(uint*) (agent + ActorIdOffset);
var contentIdLower = *(uint*) (agent + ContentIdLowerOffset);
@ -658,11 +668,12 @@ namespace XivCommon.Functions.ContextMenu {
var size = *(ushort*) secondaryArgsPtr;
var info = this.GetAgentInfo(agent);
var addon = this.GetAddonFromAgent(agent);
var args = new ContextMenuOpenArgs(
IntPtr.Zero,
addon,
agent,
string.Empty,
this.GetParentAddonName(addon),
info.actorId,
info.contentIdLower,
info.text,