From eb11857bac75828d99f7abd94852675d07605c4b Mon Sep 17 00:00:00 2001 From: goat <16760685+goaaats@users.noreply.github.com> Date: Sat, 11 Sep 2021 03:04:35 +0200 Subject: [PATCH] feat: release ImGui focus when clicking into game --- Dalamud/Interface/Internal/DalamudInterface.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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(); }