This commit is contained in:
goat 2021-09-05 15:45:40 +02:00
commit 09124a598c
No known key found for this signature in database
GPG key ID: F18F057873895461
7 changed files with 24 additions and 7 deletions

View file

@ -78,7 +78,10 @@ namespace Dalamud.Game.Internal
// "Close Addon"
if (cmd == 12 && WindowSystem.HasAnyWindowSystemFocus)
{
Log.Verbose($"Cancelling global event CloseAddon command due to WindowSystem {WindowSystem.FocusedWindowSystemNamespace}");
return IntPtr.Zero;
}
return this.hookAtkUnitBaseReceiveGlobalEvent.Original(thisPtr, cmd, a3, a4, a5);
}
@ -86,7 +89,10 @@ namespace Dalamud.Game.Internal
private void AgentHudOpenSystemMenuDetour(void* thisPtr, AtkValue* atkValueArgs, uint menuSize)
{
if (WindowSystem.HasAnyWindowSystemFocus)
{
Log.Verbose($"Cancelling OpenSystemMenu due to WindowSystem {WindowSystem.FocusedWindowSystemNamespace}");
return;
}
var configuration = Service<DalamudConfiguration>.Get();

View file

@ -58,7 +58,7 @@ namespace Dalamud.Game.Network
/// <summary>
/// Event that is called when a network message is sent/received.
/// </summary>
public event OnNetworkMessageDelegate OnNetworkMessage;
public event OnNetworkMessageDelegate NetworkMessage;
/// <summary>
/// Enable this module.
@ -109,7 +109,7 @@ namespace Dalamud.Game.Network
try
{
// Call events
this.OnNetworkMessage?.Invoke(dataPtr + 0x20, (ushort)Marshal.ReadInt16(dataPtr, 0x12), 0, targetId, NetworkMessageDirection.ZoneDown);
this.NetworkMessage?.Invoke(dataPtr + 0x20, (ushort)Marshal.ReadInt16(dataPtr, 0x12), 0, targetId, NetworkMessageDirection.ZoneDown);
this.processZonePacketDownHook.Original(a, targetId, dataPtr + 0x10);
}
@ -139,7 +139,7 @@ namespace Dalamud.Game.Network
{
// Call events
// TODO: Implement actor IDs
this.OnNetworkMessage?.Invoke(dataPtr + 0x20, (ushort)Marshal.ReadInt16(dataPtr), 0x0, 0x0, NetworkMessageDirection.ZoneUp);
this.NetworkMessage?.Invoke(dataPtr + 0x20, (ushort)Marshal.ReadInt16(dataPtr), 0x0, 0x0, NetworkMessageDirection.ZoneUp);
}
catch (Exception ex)
{

View file

@ -37,7 +37,7 @@ namespace Dalamud.Game.Network.Internal
this.uploader = new UniversalisMarketBoardUploader();
Service<GameNetwork>.Get().OnNetworkMessage += this.OnNetworkMessage;
Service<GameNetwork>.Get().NetworkMessage += this.OnNetworkMessage;
}
/// <summary>

View file

@ -648,6 +648,7 @@ namespace Dalamud.Interface.Internal
this.lastWantCapture = this.LastImGuiIoPtr.WantCaptureMouse;
WindowSystem.HasAnyWindowSystemFocus = false;
WindowSystem.FocusedWindowSystemNamespace = string.Empty;
this.Draw?.Invoke();
Service<NotificationManager>.Get().Draw();

View file

@ -1184,7 +1184,10 @@ namespace Dalamud.Interface.Internal.Windows
// Available commands (if loaded)
if (plugin.IsLoaded)
{
var commands = commandManager.Commands.Where(cInfo => cInfo.Value.ShowInHelp && cInfo.Value.LoaderAssemblyName == plugin.Manifest.InternalName);
var commands = commandManager.Commands
.Where(cInfo => cInfo.Value.ShowInHelp && cInfo.Value.LoaderAssemblyName == plugin.Manifest.InternalName)
.ToArray();
if (commands.Any())
{
ImGui.Dummy(ImGuiHelpers.ScaledVector2(10f, 10f));

View file

@ -31,7 +31,12 @@ namespace Dalamud.Interface.Windowing
/// Gets a value indicating whether any <see cref="WindowSystem"/> contains any <see cref="Window"/>
/// that has focus and is not marked to be excluded from consideration.
/// </summary>
public static bool HasAnyWindowSystemFocus { get; internal set; }
public static bool HasAnyWindowSystemFocus { get; internal set; } = false;
/// <summary>
/// Gets the name of the currently focused window system that is redirecting normal escape functionality.
/// </summary>
public static string FocusedWindowSystemNamespace { get; internal set; } = string.Empty;
/// <summary>
/// Gets the timespan since the last time any window was focused.
@ -109,6 +114,8 @@ namespace Dalamud.Interface.Windowing
}
HasAnyWindowSystemFocus = true;
FocusedWindowSystemNamespace = this.Namespace;
lastAnyFocus = DateTimeOffset.Now;
}
else

View file

@ -183,7 +183,7 @@ namespace Dalamud.Plugin.Internal
this.instance?.Dispose();
this.instance = null;
this.DalamudInterface.Dispose();
this.DalamudInterface?.Dispose();
this.DalamudInterface = null;
this.pluginType = null;