mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
This commit is contained in:
parent
ecd72cc0c7
commit
0046c618b0
21
imgui.cpp
21
imgui.cpp
@ -7044,14 +7044,31 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
|
|||||||
ImGuiButtonFlags button_flags = ImGuiButtonFlags_NoKeyModifiers | ((flags & ImGuiTreeNodeFlags_AllowOverlapMode) ? ImGuiButtonFlags_AllowOverlapMode : 0);
|
ImGuiButtonFlags button_flags = ImGuiButtonFlags_NoKeyModifiers | ((flags & ImGuiTreeNodeFlags_AllowOverlapMode) ? ImGuiButtonFlags_AllowOverlapMode : 0);
|
||||||
if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
||||||
button_flags |= ImGuiButtonFlags_PressedOnDoubleClick | ((flags & ImGuiTreeNodeFlags_OpenOnArrow) ? ImGuiButtonFlags_PressedOnClickRelease : 0);
|
button_flags |= ImGuiButtonFlags_PressedOnDoubleClick | ((flags & ImGuiTreeNodeFlags_OpenOnArrow) ? ImGuiButtonFlags_PressedOnClickRelease : 0);
|
||||||
|
|
||||||
bool hovered, held, pressed = ButtonBehavior(interact_bb, id, &hovered, &held, button_flags);
|
bool hovered, held, pressed = ButtonBehavior(interact_bb, id, &hovered, &held, button_flags);
|
||||||
if (pressed && !(flags & ImGuiTreeNodeFlags_Leaf))
|
if (!(flags & ImGuiTreeNodeFlags_Leaf))
|
||||||
{
|
{
|
||||||
bool toggled = !(flags & (ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick)) || (g.NavActivateId == id);
|
bool toggled = false;
|
||||||
|
if (pressed)
|
||||||
|
{
|
||||||
|
toggled = !(flags & (ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick)) || (g.NavActivateId == id);
|
||||||
if (flags & ImGuiTreeNodeFlags_OpenOnArrow)
|
if (flags & ImGuiTreeNodeFlags_OpenOnArrow)
|
||||||
toggled |= IsMouseHoveringRect(interact_bb.Min, ImVec2(interact_bb.Min.x + text_offset_x, interact_bb.Max.y)) && (!g.NavDisableMouseHover);
|
toggled |= IsMouseHoveringRect(interact_bb.Min, ImVec2(interact_bb.Min.x + text_offset_x, interact_bb.Max.y)) && (!g.NavDisableMouseHover);
|
||||||
if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
||||||
toggled |= g.IO.MouseDoubleClicked[0];
|
toggled |= g.IO.MouseDoubleClicked[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g.NavId == id && g.NavMoveRequest && g.NavMoveDir == ImGuiDir_Left && is_open)
|
||||||
|
{
|
||||||
|
toggled = true;
|
||||||
|
g.NavMoveRequest = false;
|
||||||
|
}
|
||||||
|
if (g.NavId == id && g.NavMoveRequest && g.NavMoveDir == ImGuiDir_Right && !is_open) // If there's something upcoming on the line we may want to give it the priority?
|
||||||
|
{
|
||||||
|
toggled = true;
|
||||||
|
g.NavMoveRequest = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (toggled)
|
if (toggled)
|
||||||
{
|
{
|
||||||
is_open = !is_open;
|
is_open = !is_open;
|
||||||
|
@ -456,9 +456,9 @@ void ImGui::ShowTestWindow(bool* p_open)
|
|||||||
if (ImGui::TreeNode("Collapsing Headers"))
|
if (ImGui::TreeNode("Collapsing Headers"))
|
||||||
{
|
{
|
||||||
static bool closable_group = true;
|
static bool closable_group = true;
|
||||||
|
ImGui::Checkbox("Enable extra group", &closable_group);
|
||||||
if (ImGui::CollapsingHeader("Header"))
|
if (ImGui::CollapsingHeader("Header"))
|
||||||
{
|
{
|
||||||
ImGui::Checkbox("Enable extra group", &closable_group);
|
|
||||||
for (int i = 0; i < 5; i++)
|
for (int i = 0; i < 5; i++)
|
||||||
ImGui::Text("Some content %d", i);
|
ImGui::Text("Some content %d", i);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user