mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
TreeNode: Fixed bug where BeginDragDropSource() failed when the _OpenOnDoubleClick flag is set. Added basic demo code. (Amend 05420ea
)
This commit is contained in:
parent
e8c986b34e
commit
54b38d88f7
@ -34,11 +34,21 @@ HOW TO UPDATE?
|
|||||||
VERSION 1.77 WIP (In Progress)
|
VERSION 1.77 WIP (In Progress)
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Breaking Changes:
|
||||||
|
|
||||||
|
Other Changes:
|
||||||
|
|
||||||
|
- TreeNode: Fixed bug where BeginDragDropSource() failed when the _OpenOnDoubleClick flag is
|
||||||
|
enabled (bug introduced in 1.76, but pre-1.76 it would also fail unless the _OpenOnArrow
|
||||||
|
flag was also set, and _OpenOnArrow is frequently set along with _OpenOnDoubleClick).
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
VERSION 1.76 (Released 2020-04-12)
|
VERSION 1.76 (Released 2020-04-12)
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Decorated log: https://github.com/ocornut/imgui/releases/tag/v1.76
|
||||||
|
|
||||||
Other Changes:
|
Other Changes:
|
||||||
|
|
||||||
- Drag and Drop, Nav: Disabling navigation arrow keys when drag and drop is active. In the docking
|
- Drag and Drop, Nav: Disabling navigation arrow keys when drag and drop is active. In the docking
|
||||||
|
@ -641,11 +641,13 @@ static void ShowDemoWindowWidgets()
|
|||||||
HelpMarker("This is a more typical looking tree with selectable nodes.\nClick to select, CTRL+Click to toggle, click on arrows or double-click to open.");
|
HelpMarker("This is a more typical looking tree with selectable nodes.\nClick to select, CTRL+Click to toggle, click on arrows or double-click to open.");
|
||||||
static ImGuiTreeNodeFlags base_flags = ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_SpanAvailWidth;
|
static ImGuiTreeNodeFlags base_flags = ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_SpanAvailWidth;
|
||||||
static bool align_label_with_current_x_position = false;
|
static bool align_label_with_current_x_position = false;
|
||||||
|
static bool test_drag_and_drop = false;
|
||||||
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_OpenOnArrow", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_OpenOnArrow);
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_OpenOnArrow", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_OpenOnArrow);
|
||||||
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_OpenOnDoubleClick", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_OpenOnDoubleClick);
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_OpenOnDoubleClick", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_OpenOnDoubleClick);
|
||||||
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAvailWidth", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_SpanAvailWidth); ImGui::SameLine(); HelpMarker("Extend hit area to all available width instead of allowing more items to be layed out after the node.");
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAvailWidth", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_SpanAvailWidth); ImGui::SameLine(); HelpMarker("Extend hit area to all available width instead of allowing more items to be layed out after the node.");
|
||||||
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanFullWidth", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_SpanFullWidth);
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanFullWidth", (unsigned int*)&base_flags, ImGuiTreeNodeFlags_SpanFullWidth);
|
||||||
ImGui::Checkbox("Align label with current X position", &align_label_with_current_x_position);
|
ImGui::Checkbox("Align label with current X position", &align_label_with_current_x_position);
|
||||||
|
ImGui::Checkbox("Test tree node as drag source", &test_drag_and_drop);
|
||||||
ImGui::Text("Hello!");
|
ImGui::Text("Hello!");
|
||||||
if (align_label_with_current_x_position)
|
if (align_label_with_current_x_position)
|
||||||
ImGui::Unindent(ImGui::GetTreeNodeToLabelSpacing());
|
ImGui::Unindent(ImGui::GetTreeNodeToLabelSpacing());
|
||||||
@ -665,6 +667,12 @@ static void ShowDemoWindowWidgets()
|
|||||||
bool node_open = ImGui::TreeNodeEx((void*)(intptr_t)i, node_flags, "Selectable Node %d", i);
|
bool node_open = ImGui::TreeNodeEx((void*)(intptr_t)i, node_flags, "Selectable Node %d", i);
|
||||||
if (ImGui::IsItemClicked())
|
if (ImGui::IsItemClicked())
|
||||||
node_clicked = i;
|
node_clicked = i;
|
||||||
|
if (test_drag_and_drop && ImGui::BeginDragDropSource())
|
||||||
|
{
|
||||||
|
ImGui::SetDragDropPayload("_TREENODE", NULL, 0);
|
||||||
|
ImGui::Text("This is a drag and drop source");
|
||||||
|
ImGui::EndDragDropSource();
|
||||||
|
}
|
||||||
if (node_open)
|
if (node_open)
|
||||||
{
|
{
|
||||||
ImGui::BulletText("Blah blah\nBlah Blah");
|
ImGui::BulletText("Blah blah\nBlah Blah");
|
||||||
@ -680,6 +688,12 @@ static void ShowDemoWindowWidgets()
|
|||||||
ImGui::TreeNodeEx((void*)(intptr_t)i, node_flags, "Selectable Leaf %d", i);
|
ImGui::TreeNodeEx((void*)(intptr_t)i, node_flags, "Selectable Leaf %d", i);
|
||||||
if (ImGui::IsItemClicked())
|
if (ImGui::IsItemClicked())
|
||||||
node_clicked = i;
|
node_clicked = i;
|
||||||
|
if (test_drag_and_drop && ImGui::BeginDragDropSource())
|
||||||
|
{
|
||||||
|
ImGui::SetDragDropPayload("_TREENODE", NULL, 0);
|
||||||
|
ImGui::Text("This is a drag and drop source");
|
||||||
|
ImGui::EndDragDropSource();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (node_clicked != -1)
|
if (node_clicked != -1)
|
||||||
|
@ -5360,10 +5360,11 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
|
|||||||
// It is rather standard that arrow click react on Down rather than Up and we'd be tempted to make it the default
|
// It is rather standard that arrow click react on Down rather than Up and we'd be tempted to make it the default
|
||||||
// (by removing the _OpenOnArrow test below), however this would have a perhaps surprising effect on CollapsingHeader()?
|
// (by removing the _OpenOnArrow test below), however this would have a perhaps surprising effect on CollapsingHeader()?
|
||||||
// So right now we are making this optional. May evolve later.
|
// So right now we are making this optional. May evolve later.
|
||||||
|
// We set ImGuiButtonFlags_PressedOnClickRelease on OpenOnDoubleClick because we want the item to be active on the initial MouseDown in order for drag and drop to work.
|
||||||
if (is_mouse_x_over_arrow && (flags & ImGuiTreeNodeFlags_OpenOnArrow))
|
if (is_mouse_x_over_arrow && (flags & ImGuiTreeNodeFlags_OpenOnArrow))
|
||||||
button_flags |= ImGuiButtonFlags_PressedOnClick;
|
button_flags |= ImGuiButtonFlags_PressedOnClick;
|
||||||
else if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
else if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
||||||
button_flags |= ImGuiButtonFlags_PressedOnDoubleClick;
|
button_flags |= ImGuiButtonFlags_PressedOnClickRelease | ImGuiButtonFlags_PressedOnDoubleClick;
|
||||||
else
|
else
|
||||||
button_flags |= ImGuiButtonFlags_PressedOnClickRelease;
|
button_flags |= ImGuiButtonFlags_PressedOnClickRelease;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user