From 90817b9a0572784d405b6537631897a0cbc184e2 Mon Sep 17 00:00:00 2001 From: meli <57847713+ff-meli@users.noreply.github.com> Date: Sun, 17 Nov 2019 17:04:50 -0800 Subject: [PATCH] include return value from hooked chat handler; this seems to fix the content menu issues --- Dalamud/Game/Internal/Gui/ChatGui.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Dalamud/Game/Internal/Gui/ChatGui.cs b/Dalamud/Game/Internal/Gui/ChatGui.cs index ab59c4b00..4d254a71c 100644 --- a/Dalamud/Game/Internal/Gui/ChatGui.cs +++ b/Dalamud/Game/Internal/Gui/ChatGui.cs @@ -10,7 +10,7 @@ using Serilog; namespace Dalamud.Game.Internal.Gui { public sealed class ChatGui : IDisposable { [UnmanagedFunctionPointer(CallingConvention.ThisCall)] - private delegate void PrintMessageDelegate(IntPtr manager, XivChatType chatType, IntPtr senderName, + private delegate IntPtr PrintMessageDelegate(IntPtr manager, XivChatType chatType, IntPtr senderName, IntPtr message, uint senderId, IntPtr parameter); @@ -79,8 +79,10 @@ namespace Dalamud.Game.Internal.Gui { } } - private void HandlePrintMessageDetour(IntPtr manager, XivChatType chattype, IntPtr pSenderName, IntPtr pMessage, + private IntPtr HandlePrintMessageDetour(IntPtr manager, XivChatType chattype, IntPtr pSenderName, IntPtr pMessage, uint senderid, IntPtr parameter) { + IntPtr retVal = IntPtr.Zero; + try { var senderName = StdString.ReadFromPointer(pSenderName); var message = StdString.ReadFromPointer(pMessage); @@ -105,7 +107,7 @@ namespace Dalamud.Game.Internal.Gui { // Print the original chat if it's handled. if (!isHandled) - this.printMessageHook.Original(manager, chattype, pSenderName, messagePtr, senderid, parameter); + retVal = this.printMessageHook.Original(manager, chattype, pSenderName, messagePtr, senderid, parameter); if (this.baseAddress == IntPtr.Zero) this.baseAddress = manager; @@ -113,8 +115,10 @@ namespace Dalamud.Game.Internal.Gui { allocatedString?.Dispose(); } catch (Exception ex) { Log.Error(ex, "Exception on OnChatMessage hook."); - this.printMessageHook.Original(manager, chattype, pSenderName, pMessage, senderid, parameter); + retVal = this.printMessageHook.Original(manager, chattype, pSenderName, pMessage, senderid, parameter); } + + return retVal; } ///