From 16022ea46affad6604b1a71c3f799bd50560a8ae Mon Sep 17 00:00:00 2001 From: Soreepeong Date: Fri, 1 Mar 2024 00:46:23 +0900 Subject: [PATCH] Always show focus indicator if focused --- .../Internal/ActiveNotification.ImGui.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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();