mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-22 00:19:18 +01:00
include return value from hooked chat handler; this seems to fix t… (#9)
include return value from hooked chat handler; this seems to fix the context menu issues
This commit is contained in:
commit
9727dc7fff
1 changed files with 8 additions and 4 deletions
|
|
@ -10,7 +10,7 @@ using Serilog;
|
||||||
namespace Dalamud.Game.Internal.Gui {
|
namespace Dalamud.Game.Internal.Gui {
|
||||||
public sealed class ChatGui : IDisposable {
|
public sealed class ChatGui : IDisposable {
|
||||||
[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
|
[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,
|
IntPtr message,
|
||||||
uint senderId, IntPtr parameter);
|
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) {
|
uint senderid, IntPtr parameter) {
|
||||||
|
IntPtr retVal = IntPtr.Zero;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var senderName = StdString.ReadFromPointer(pSenderName);
|
var senderName = StdString.ReadFromPointer(pSenderName);
|
||||||
var message = StdString.ReadFromPointer(pMessage);
|
var message = StdString.ReadFromPointer(pMessage);
|
||||||
|
|
@ -105,7 +107,7 @@ namespace Dalamud.Game.Internal.Gui {
|
||||||
|
|
||||||
// Print the original chat if it's handled.
|
// Print the original chat if it's handled.
|
||||||
if (!isHandled)
|
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)
|
if (this.baseAddress == IntPtr.Zero)
|
||||||
this.baseAddress = manager;
|
this.baseAddress = manager;
|
||||||
|
|
@ -113,8 +115,10 @@ namespace Dalamud.Game.Internal.Gui {
|
||||||
allocatedString?.Dispose();
|
allocatedString?.Dispose();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Log.Error(ex, "Exception on OnChatMessage hook.");
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue