瀏覽代碼

Fixed child windows with the ImGuiWindowFlags_NoMove flag not taking direct focus

ocornut 10 年之前
父節點
當前提交
466f01b313
共有 1 個文件被更改,包括 8 次插入4 次删除
  1. 8 4
      imgui.cpp

+ 8 - 4
imgui.cpp

@@ -2258,12 +2258,16 @@ void ImGui::Render()
         {
             if (!(g.FocusedWindow && !g.FocusedWindow->WasActive && g.FocusedWindow->Active)) // Unless we just made a popup appear
             {
-                if (g.HoveredRootWindow != NULL && !(g.HoveredWindow->Flags & ImGuiWindowFlags_NoMove))
+                if (g.HoveredRootWindow != NULL)
                 {
-                    g.MovedWindow = g.HoveredWindow;
-                    SetActiveID(g.HoveredRootWindow->MoveID, g.HoveredRootWindow);
+                    FocusWindow(g.HoveredWindow);
+                    if (!(g.HoveredWindow->Flags & ImGuiWindowFlags_NoMove))
+                    {
+                        g.MovedWindow = g.HoveredWindow;
+                        SetActiveID(g.HoveredRootWindow->MoveID, g.HoveredRootWindow);
+                    }
                 }
-                else if (g.HoveredRootWindow == NULL && g.FocusedWindow != NULL && GetFrontMostModalRootWindow() == NULL)
+                else if (g.FocusedWindow != NULL && GetFrontMostModalRootWindow() == NULL)
                 {
                     // Clicking on void disable focus
                     FocusWindow(NULL);