diff --git a/imgui.cpp b/imgui.cpp index e337c97b..0da2d40a 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -5035,7 +5035,6 @@ void ImGui::EndChild() ImGuiWindow* parent_window = g.CurrentWindow; ImRect bb(parent_window->DC.CursorPos, parent_window->DC.CursorPos + sz); - ItemSize(sz); if ((window->DC.NavLayerActiveMask != 0 || window->DC.NavHasScroll) && !(window->Flags & ImGuiWindowFlags_NavFlattened)) { @@ -6265,13 +6264,13 @@ void ImGui::FocusWindow(ImGuiWindow* window) if (g.NavWindow != window) { - g.NavId = window ? window->NavLastIds[0] : 0; // Restore NavId - g.NavIdIsAlive = false; - g.NavLayer = 0; g.NavWindow = window; if (window && g.NavDisableMouseHover) g.NavMousePosDirty = true; g.NavInitRequest = false; + g.NavId = window ? window->NavLastIds[0] : 0; // Restore NavId + g.NavIdIsAlive = false; + g.NavLayer = 0; } // Passing NULL allow to disable keyboard focus diff --git a/imgui.h b/imgui.h index 9a80026c..61ff2c69 100644 --- a/imgui.h +++ b/imgui.h @@ -455,6 +455,7 @@ namespace ImGui IMGUI_API void StyleColorsLight(ImGuiStyle* dst = NULL); // Focus, Activation + // (Prefer using "SetItemDefaultFocus()" over "if (IsWindowAppearing()) SetScrollHere()" when applicable, to make your code more forward compatible when navigation branch is merged) IMGUI_API void SetItemDefaultFocus(); // make last item the default focused item of a window. Please use instead of "if (IsWindowAppearing()) SetScrollHere()" to signify "default item". IMGUI_API void SetKeyboardFocusHere(int offset = 0); // focus keyboard on the next widget. Use positive 'offset' to access sub components of a multiple component widget. Use -1 to access previous widget. diff --git a/imgui_demo.cpp b/imgui_demo.cpp index 3af5399b..0893cba4 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -2730,7 +2730,7 @@ struct ExampleAppConsole // Demonstrate keeping focus on the input box ImGui::SetItemDefaultFocus(); - if (reclaim_focus) //|| ImGui::IsItemHovered()) + if (reclaim_focus) ImGui::SetKeyboardFocusHere(-1); // Auto focus previous widget ImGui::End(); diff --git a/imgui_internal.h b/imgui_internal.h index c012f380..4cf1d7c6 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -247,6 +247,16 @@ enum ImGuiDataType ImGuiDataType_Float2 }; +enum ImGuiDir +{ + ImGuiDir_None = -1, + ImGuiDir_Left = 0, + ImGuiDir_Right = 1, + ImGuiDir_Up = 2, + ImGuiDir_Down = 3, + ImGuiDir_Count_ +}; + enum ImGuiInputSource { ImGuiInputSource_None = 0, @@ -268,16 +278,6 @@ enum ImGuiInputReadMode ImGuiInputReadMode_RepeatFast }; -enum ImGuiDir -{ - ImGuiDir_None = -1, - ImGuiDir_Left = 0, - ImGuiDir_Right = 1, - ImGuiDir_Up = 2, - ImGuiDir_Down = 3, - ImGuiDir_Count_ -}; - enum ImGuiNavHighlightFlags_ { ImGuiNavHighlightFlags_TypeDefault = 1 << 0,