diff --git a/Dalamud/Interface/Internal/DalamudInterface.cs b/Dalamud/Interface/Internal/DalamudInterface.cs index b6a971a99..92b5ef31d 100644 --- a/Dalamud/Interface/Internal/DalamudInterface.cs +++ b/Dalamud/Interface/Internal/DalamudInterface.cs @@ -17,6 +17,7 @@ using Dalamud.Plugin.Internal; using Dalamud.Utility; using ImGuiNET; using ImGuiScene.ManagedAsserts; +using PInvoke; using Serilog.Events; namespace Dalamud.Interface.Internal @@ -316,6 +317,13 @@ namespace Dalamud.Interface.Internal if (this.isImGuiDrawDemoWindow) ImGui.ShowDemoWindow(); + + // Release focus of any ImGui window if we click into the game. + var io = ImGui.GetIO(); + if (!io.WantCaptureMouse && (User32.GetKeyState((int)User32.VirtualKey.VK_LBUTTON) & 0x8000) != 0) + { + ImGui.SetWindowFocus(null); + } } catch (Exception ex) { @@ -479,6 +487,11 @@ namespace Dalamud.Interface.Internal ImGui.MenuItem("Enable Asserts", string.Empty, ref ImGuiManagedAsserts.EnableAsserts); + if (ImGui.MenuItem("Clear focus")) + { + ImGui.SetWindowFocus(null); + } + ImGui.EndMenu(); }