|
@@ -4828,6 +4828,8 @@ bool ImGui::IsItemFocused()
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+// Important: this can be useful but it is NOT equivalent to the behavior of e.g.Button()!
|
|
|
+// Most widgets have specific reactions based on mouse-up/down state, mouse position etc.
|
|
|
bool ImGui::IsItemClicked(ImGuiMouseButton mouse_button)
|
|
|
{
|
|
|
return IsMouseClicked(mouse_button) && IsItemHovered(ImGuiHoveredFlags_None);
|
|
@@ -5724,9 +5726,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
window->PopupId = popup_ref.PopupId;
|
|
|
}
|
|
|
|
|
|
- if (window_just_appearing_after_hidden_for_resize && !(flags & ImGuiWindowFlags_ChildWindow))
|
|
|
- window->NavLastIds[0] = 0;
|
|
|
-
|
|
|
// Update ->RootWindow and others pointers (before any possible call to FocusWindow)
|
|
|
if (first_begin_of_the_frame)
|
|
|
UpdateWindowParentAndRootLinks(window, flags, parent_window);
|
|
@@ -8482,9 +8481,10 @@ ImVec2 ImGui::FindBestWindowPosForPopup(ImGuiWindow* window)
|
|
|
void ImGui::SetNavID(ImGuiID id, int nav_layer, ImGuiID focus_scope_id)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- IM_ASSERT(g.NavWindow);
|
|
|
- IM_ASSERT(nav_layer == 0 || nav_layer == 1);
|
|
|
+ IM_ASSERT(g.NavWindow != NULL);
|
|
|
+ IM_ASSERT(nav_layer == ImGuiNavLayer_Main || nav_layer == ImGuiNavLayer_Menu);
|
|
|
g.NavId = id;
|
|
|
+ g.NavLayer = (ImGuiNavLayer)nav_layer;
|
|
|
g.NavFocusScopeId = focus_scope_id;
|
|
|
g.NavWindow->NavLastIds[nav_layer] = id;
|
|
|
}
|
|
@@ -8838,7 +8838,7 @@ void ImGui::NavInitWindow(ImGuiWindow* window, bool force_reinit)
|
|
|
IM_ASSERT(window == g.NavWindow);
|
|
|
bool init_for_nav = false;
|
|
|
if (!(window->Flags & ImGuiWindowFlags_NoNavInputs))
|
|
|
- if (!(window->Flags & ImGuiWindowFlags_ChildWindow) || (window->Flags & ImGuiWindowFlags_Popup) || (window->NavLastIds[0] == 0) || force_reinit)
|
|
|
+ if (window == window->RootWindow || (window->Flags & ImGuiWindowFlags_Popup) || (window->NavLastIds[0] == 0) || force_reinit)
|
|
|
init_for_nav = true;
|
|
|
IMGUI_DEBUG_LOG_NAV("[nav] NavInitRequest: from NavInitWindow(), init_for_nav=%d, window=\"%s\", layer=%d\n", init_for_nav, window->Name, g.NavLayer);
|
|
|
if (init_for_nav)
|
|
@@ -8962,7 +8962,7 @@ static void ImGui::NavUpdate()
|
|
|
io.NavInputsDownDuration[i] = (io.NavInputs[i] > 0.0f) ? (io.NavInputsDownDuration[i] < 0.0f ? 0.0f : io.NavInputsDownDuration[i] + io.DeltaTime) : -1.0f;
|
|
|
|
|
|
// Process navigation init request (select first/default focus)
|
|
|
- if (g.NavInitResultId != 0 && (!g.NavDisableHighlight || g.NavInitRequestFromMove))
|
|
|
+ if (g.NavInitResultId != 0)
|
|
|
NavUpdateInitResult();
|
|
|
g.NavInitRequest = false;
|
|
|
g.NavInitRequestFromMove = false;
|
|
@@ -9029,7 +9029,7 @@ static void ImGui::NavUpdate()
|
|
|
ImGuiWindow* parent_window = g.NavWindow->ParentWindow;
|
|
|
IM_ASSERT(child_window->ChildId != 0);
|
|
|
FocusWindow(parent_window);
|
|
|
- SetNavID(child_window->ChildId, 0, 0);
|
|
|
+ SetNavID(child_window->ChildId, ImGuiNavLayer_Main, 0);
|
|
|
// Reassigning with same value, we're being explicit here.
|
|
|
g.NavIdIsAlive = false; // -V1048
|
|
|
if (g.NavDisableMouseHover)
|