From c38c54af524280b4c7b1ddbbc8f2a6492d2c123e Mon Sep 17 00:00:00 2001 From: ocornut Date: Mon, 6 Apr 2015 11:25:07 +0100 Subject: [PATCH] Clicking on void loses keyboard-focus so application can use TAB back --- imgui.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index 8062ddb6..c6c0334b 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2153,12 +2153,20 @@ void ImGui::Render() g.CurrentWindow->Visible = false; ImGui::End(); - // Select window for move/focus when we're done with all our widgets (we use the root window ID here) - if (g.ActiveId == 0 && g.HoveredId == 0 && g.HoveredRootWindow != NULL && g.IO.MouseClicked[0]) + if (g.ActiveId == 0 && g.HoveredId == 0 && g.IO.MouseClicked[0]) { - IM_ASSERT(g.MovedWindow == NULL); - g.MovedWindow = g.HoveredWindow; - SetActiveId(g.HoveredRootWindow->MoveID); + if (g.HoveredRootWindow != NULL) + { + // Select window for move/focus when we're done with all our widgets (we use the root window ID here) + IM_ASSERT(g.MovedWindow == NULL); + g.MovedWindow = g.HoveredWindow; + SetActiveId(g.HoveredRootWindow->MoveID); + } + else if (g.FocusedWindow != NULL) + { + // Clicking on void disable focus + FocusWindow(NULL); + } } // Sort the window list so that all child windows are after their parent