Browse Source

Allow SetWindowFocus(NULL) to remove focus

ocornut 10 years ago
parent
commit
fe64da6197
2 changed files with 15 additions and 4 deletions
  1. 14 3
      imgui.cpp
  2. 1 1
      imgui.h

+ 14 - 3
imgui.cpp

@@ -3519,6 +3519,10 @@ static void FocusWindow(ImGuiWindow* window)
     // Always mark the window we passed as focused. This is used for keyboard interactions such as tabbing.
     g.FocusedWindow = window;
 
+    // Passing NULL allow to disable keyboard focus
+    if (!window)
+        return;
+
     // And move its root window to the top of the pile 
     if (window->RootWindow)
         window = window->RootWindow;
@@ -3903,9 +3907,16 @@ void ImGui::SetWindowFocus()
 
 void ImGui::SetWindowFocus(const char* name)
 {
-    ImGuiWindow* window = FindWindowByName(name);
-    if (window)
-        FocusWindow(window);
+    if (name)
+    {
+        ImGuiWindow* window = FindWindowByName(name);
+        if (window)
+            FocusWindow(window);
+    }
+    else
+    {
+        FocusWindow(NULL);
+    }
 }
 
 void ImGui::SetNextWindowPos(const ImVec2& pos, ImGuiSetCond cond)

+ 1 - 1
imgui.h

@@ -191,7 +191,7 @@ namespace ImGui
     IMGUI_API void          SetWindowPos(const char* name, const ImVec2& pos, ImGuiSetCond cond = 0);      // set named window position - call within Begin()/End(). may incur tearing
     IMGUI_API void          SetWindowSize(const char* name, const ImVec2& size, ImGuiSetCond cond = 0);    // set named window size. set to ImVec2(0,0) to force an auto-fit. may incur tearing
     IMGUI_API void          SetWindowCollapsed(const char* name, bool collapsed, ImGuiSetCond cond = 0);   // set named window collapsed state
-    IMGUI_API void          SetWindowFocus(const char* name);                                              // set named window to be focused / front-most
+    IMGUI_API void          SetWindowFocus(const char* name);                                              // set named window to be focused / front-most. use NULL to remove focus.
 
     IMGUI_API float         GetScrollPosY();                                                    // get scrolling position [0..GetScrollMaxY()]
     IMGUI_API float         GetScrollMaxY();                                                    // get maximum scrolling position == ContentSize.Y - WindowSize.Y