MCPcopy Create free account
hub / github.com/RenderKit/embree / IsRootOfOpenMenuSet

Function IsRootOfOpenMenuSet

tutorials/common/imgui/imgui_widgets.cpp:6942–6962  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6940}
6941
6942static bool IsRootOfOpenMenuSet()
6943{
6944 ImGuiContext& g = *GImGui;
6945 ImGuiWindow* window = g.CurrentWindow;
6946 if ((g.OpenPopupStack.Size <= g.BeginPopupStack.Size) || (window->Flags & ImGuiWindowFlags_ChildMenu))
6947 return false;
6948
6949 // Initially we used 'upper_popup->OpenParentId == window->IDStack.back()' to differentiate multiple menu sets from each others
6950 // (e.g. inside menu bar vs loose menu items) based on parent ID.
6951 // This would however prevent the use of e.g. PuhsID() user code submitting menus.
6952 // Previously this worked between popup and a first child menu because the first child menu always had the _ChildWindow flag,
6953 // making hovering on parent popup possible while first child menu was focused - but this was generally a bug with other side effects.
6954 // Instead we don't treat Popup specifically (in order to consistently support menu features in them), maybe the first child menu of a Popup
6955 // doesn't have the _ChildWindow flag, and we rely on this IsRootOfOpenMenuSet() check to allow hovering between root window/popup and first child menu.
6956 // In the end, lack of ID check made it so we could no longer differentiate between separate menu sets. To compensate for that, we at least check parent window nav layer.
6957 // This fixes the most common case of menu opening on hover when moving between window content and menu bar. Multiple different menu sets in same nav layer would still
6958 // open on hover, but that should be a lesser problem, because if such menus are close in proximity in window content then it won't feel weird and if they are far apart
6959 // it likely won't be a problem anyone runs into.
6960 const ImGuiPopupData* upper_popup = &g.OpenPopupStack[g.BeginPopupStack.Size];
6961 return (window->DC.NavLayerCurrent == upper_popup->ParentNavLayer && upper_popup->Window && (upper_popup->Window->Flags & ImGuiWindowFlags_ChildMenu));
6962}
6963
6964bool ImGui::BeginMenuEx(const char* label, const char* icon, bool enabled)
6965{

Callers 2

BeginMenuExMethod · 0.85
MenuItemExMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected