diff --git a/Dalamud/Interface/ImGuiNotification/Internal/ActiveNotification.ImGui.cs b/Dalamud/Interface/ImGuiNotification/Internal/ActiveNotification.ImGui.cs index 5f7d1a0fd..d4a08ff69 100644 --- a/Dalamud/Interface/ImGuiNotification/Internal/ActiveNotification.ImGui.cs +++ b/Dalamud/Interface/ImGuiNotification/Internal/ActiveNotification.ImGui.cs @@ -75,14 +75,21 @@ internal sealed partial class ActiveNotification ImGuiWindowFlags.NoFocusOnAppearing | ImGuiWindowFlags.NoDocking); - var isTakingKeyboardInput = ImGui.IsWindowFocused() && ImGui.GetIO().WantTextInput; + var isFocused = ImGui.IsWindowFocused(); var isHovered = ImGui.IsWindowHovered(ImGuiHoveredFlags.AllowWhenBlockedByActiveItem); + var isTakingKeyboardInput = isFocused && ImGui.GetIO().WantTextInput; var warrantsExtension = this.ExtensionDurationSinceLastInterest > TimeSpan.Zero && (isHovered || isTakingKeyboardInput); this.EffectiveExpiry = this.CalculateEffectiveExpiry(ref warrantsExtension); + if (!isTakingKeyboardInput && !isHovered && isFocused) + { + ImGui.SetWindowFocus(null); + isFocused = false; + } + if (DateTime.Now > this.EffectiveExpiry) this.DismissNow(NotificationDismissReason.Timeout); @@ -105,8 +112,8 @@ internal sealed partial class ActiveNotification ImGui.PopStyleVar(); } - if (isTakingKeyboardInput) - this.DrawKeyboardInputIndicator(); + if (isFocused) + this.DrawFocusIndicator(); this.DrawExpiryBar(this.EffectiveExpiry, warrantsExtension); if (ImGui.IsWindowHovered()) @@ -218,7 +225,7 @@ internal sealed partial class ActiveNotification ImGui.PopClipRect(); } - private void DrawKeyboardInputIndicator() + private void DrawFocusIndicator() { var windowPos = ImGui.GetWindowPos(); var windowSize = ImGui.GetWindowSize();