mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 11:57:00 +00:00
Demo: Added simple item reordering demo in Widgets -> Drag and Drop section. (#2823, #143) [@rokups]
This commit is contained in:
parent
8aad3482a4
commit
3b271b1847
@ -40,6 +40,7 @@ Other Changes:
|
|||||||
- InputText, Nav: Fixed Home/End key broken when activating Keyboard Navigation. (#787)
|
- InputText, Nav: Fixed Home/End key broken when activating Keyboard Navigation. (#787)
|
||||||
- TreeNode: Fixed combination of ImGuiTreeNodeFlags_SpanFullWidth and ImGuiTreeNodeFlags_OpenOnArrow
|
- TreeNode: Fixed combination of ImGuiTreeNodeFlags_SpanFullWidth and ImGuiTreeNodeFlags_OpenOnArrow
|
||||||
incorrectly locating the arrow hit position to the left of the frame. (#2451, #2438, #1897)
|
incorrectly locating the arrow hit position to the left of the frame. (#2451, #2438, #1897)
|
||||||
|
- Demo: Added simple item reordering demo in Widgets -> Drag and Drop section. (#2823, #143) [@rokups]
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
@ -1506,24 +1506,21 @@ static void ShowDemoWindowWidgets()
|
|||||||
|
|
||||||
if (ImGui::TreeNode("Drag and Drop"))
|
if (ImGui::TreeNode("Drag and Drop"))
|
||||||
{
|
{
|
||||||
|
if (ImGui::TreeNode("Drag and drop in standard widgets"))
|
||||||
{
|
{
|
||||||
// ColorEdit widgets automatically act as drag source and drag target.
|
// ColorEdit widgets automatically act as drag source and drag target.
|
||||||
// They are using standardized payload strings IMGUI_PAYLOAD_TYPE_COLOR_3F and IMGUI_PAYLOAD_TYPE_COLOR_4F to allow your own widgets
|
// They are using standardized payload strings IMGUI_PAYLOAD_TYPE_COLOR_3F and IMGUI_PAYLOAD_TYPE_COLOR_4F to allow your own widgets
|
||||||
// to use colors in their drag and drop interaction. Also see the demo in Color Picker -> Palette demo.
|
// to use colors in their drag and drop interaction. Also see the demo in Color Picker -> Palette demo.
|
||||||
ImGui::BulletText("Drag and drop in standard widgets");
|
|
||||||
ImGui::SameLine();
|
|
||||||
HelpMarker("You can drag from the colored squares.");
|
HelpMarker("You can drag from the colored squares.");
|
||||||
ImGui::Indent();
|
static float col1[3] = { 1.0f, 0.0f, 0.2f };
|
||||||
static float col1[3] = { 1.0f,0.0f,0.2f };
|
static float col2[4] = { 0.4f, 0.7f, 0.0f, 0.5f };
|
||||||
static float col2[4] = { 0.4f,0.7f,0.0f,0.5f };
|
|
||||||
ImGui::ColorEdit3("color 1", col1);
|
ImGui::ColorEdit3("color 1", col1);
|
||||||
ImGui::ColorEdit4("color 2", col2);
|
ImGui::ColorEdit4("color 2", col2);
|
||||||
ImGui::Unindent();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ImGui::TreeNode("Drag and drop to copy/swap items"))
|
||||||
{
|
{
|
||||||
ImGui::BulletText("Drag and drop to copy/swap items");
|
|
||||||
ImGui::Indent();
|
|
||||||
enum Mode
|
enum Mode
|
||||||
{
|
{
|
||||||
Mode_Copy,
|
Mode_Copy,
|
||||||
@ -1577,7 +1574,31 @@ static void ShowDemoWindowWidgets()
|
|||||||
}
|
}
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
}
|
}
|
||||||
ImGui::Unindent();
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::TreeNode("Drag to reorder items (simple)"))
|
||||||
|
{
|
||||||
|
// Simple reordering
|
||||||
|
HelpMarker("We don't use the drag and drop api at all here! Instead we query when the item is held but not hovered, and order items accordingly.");
|
||||||
|
static const char* item_names[] = { "Item One", "Item Two", "Item Three", "Item Four", "Item Five" };
|
||||||
|
for (int n = 0; n < IM_ARRAYSIZE(item_names); n++)
|
||||||
|
{
|
||||||
|
const char* item = item_names[n];
|
||||||
|
ImGui::Selectable(item);
|
||||||
|
|
||||||
|
if (ImGui::IsItemActive() && !ImGui::IsItemHovered())
|
||||||
|
{
|
||||||
|
int n_next = n + (ImGui::GetMouseDragDelta(0).y < 0.f ? -1 : 1);
|
||||||
|
if (n_next >= 0 && n_next < IM_ARRAYSIZE(item_names))
|
||||||
|
{
|
||||||
|
item_names[n] = item_names[n_next];
|
||||||
|
item_names[n_next] = item;
|
||||||
|
ImGui::ResetMouseDragDelta();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
@ -1607,10 +1628,10 @@ static void ShowDemoWindowWidgets()
|
|||||||
if (item_type == 10){ ret = ImGui::TreeNodeEx("ITEM: TreeNode w/ ImGuiTreeNodeFlags_OpenOnDoubleClick", ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_NoTreePushOnOpen); } // Testing tree node with ImGuiButtonFlags_PressedOnDoubleClick button policy.
|
if (item_type == 10){ ret = ImGui::TreeNodeEx("ITEM: TreeNode w/ ImGuiTreeNodeFlags_OpenOnDoubleClick", ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_NoTreePushOnOpen); } // Testing tree node with ImGuiButtonFlags_PressedOnDoubleClick button policy.
|
||||||
if (item_type == 11){ const char* items[] = { "Apple", "Banana", "Cherry", "Kiwi" }; static int current = 1; ret = ImGui::ListBox("ITEM: ListBox", ¤t, items, IM_ARRAYSIZE(items), IM_ARRAYSIZE(items)); }
|
if (item_type == 11){ const char* items[] = { "Apple", "Banana", "Cherry", "Kiwi" }; static int current = 1; ret = ImGui::ListBox("ITEM: ListBox", ¤t, items, IM_ARRAYSIZE(items), IM_ARRAYSIZE(items)); }
|
||||||
|
|
||||||
// Display the value of IsItemHovered() and other common item state functions.
|
// Display the value of IsItemHovered() and other common item state functions.
|
||||||
// Note that the ImGuiHoveredFlags_XXX flags can be combined.
|
// Note that the ImGuiHoveredFlags_XXX flags can be combined.
|
||||||
// Because BulletText is an item itself and that would affect the output of IsItemXXX functions,
|
// Because BulletText is an item itself and that would affect the output of IsItemXXX functions,
|
||||||
// we query every state in a single call to avoid storing them and to simplify the code
|
// we query every state in a single call to avoid storing them and to simplify the code
|
||||||
ImGui::BulletText(
|
ImGui::BulletText(
|
||||||
"Return value = %d\n"
|
"Return value = %d\n"
|
||||||
"IsItemFocused() = %d\n"
|
"IsItemFocused() = %d\n"
|
||||||
@ -1653,7 +1674,7 @@ static void ShowDemoWindowWidgets()
|
|||||||
if (embed_all_inside_a_child_window)
|
if (embed_all_inside_a_child_window)
|
||||||
ImGui::BeginChild("outer_child", ImVec2(0, ImGui::GetFontSize() * 20), true);
|
ImGui::BeginChild("outer_child", ImVec2(0, ImGui::GetFontSize() * 20), true);
|
||||||
|
|
||||||
// Testing IsWindowFocused() function with its various flags.
|
// Testing IsWindowFocused() function with its various flags.
|
||||||
// Note that the ImGuiFocusedFlags_XXX flags can be combined.
|
// Note that the ImGuiFocusedFlags_XXX flags can be combined.
|
||||||
ImGui::BulletText(
|
ImGui::BulletText(
|
||||||
"IsWindowFocused() = %d\n"
|
"IsWindowFocused() = %d\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user