mirror of
https://github.com/Drezil/imgui.git
synced 2024-12-24 00:26:36 +00:00
parent
bd6097ac6f
commit
17efd7b3b0
@ -53,6 +53,7 @@ Other Changes:
|
||||
- Misc: Tweaked software mouse cursor offset to match the offset of the corresponding Windows 10 cursors.
|
||||
- Fixed a include build issue for Cygwin in non-POSIX (Win32) mode. (#1917, #1319, #276)
|
||||
- Windows: Fixed missing ImmReleaseContext() call in the default Win32 IME handler. (#1932) [@vby]
|
||||
- Demo: Added basic Drag and Drop demo. (#143)
|
||||
- Examples: Metal: Added Metal rendering backend. (#1929, #1873) [@warrenm]
|
||||
- Examples: OSX: Added early raw OSX platform backend. (#1873) [@pagghiu, @itamago, @ocornut]
|
||||
- Examples: Added mac OSX & iOS + Metal example in example_apple_metal/. (#1929, #1873) [@warrenm]
|
||||
|
@ -399,7 +399,7 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
||||
static float col1[3] = { 1.0f,0.0f,0.2f };
|
||||
static float col2[4] = { 0.4f,0.7f,0.0f,0.5f };
|
||||
ImGui::ColorEdit3("color 1", col1);
|
||||
ImGui::SameLine(); ShowHelpMarker("Click on the colored square to open a color picker.\nRight-click on the colored square to show options.\nCTRL+click on individual component to input value.\n");
|
||||
ImGui::SameLine(); ShowHelpMarker("Click on the colored square to open a color picker.\nClick and hold to use drag and drop.\nRight-click on the colored square to show options.\nCTRL+click on individual component to input value.\n");
|
||||
|
||||
ImGui::ColorEdit4("color 2", col2);
|
||||
}
|
||||
@ -1186,6 +1186,83 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
||||
ImGui::TreePop();
|
||||
}
|
||||
|
||||
if (ImGui::TreeNode("Drag and Drop"))
|
||||
{
|
||||
{
|
||||
// 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
|
||||
// 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::Indent();
|
||||
static float col1[3] = { 1.0f,0.0f,0.2f };
|
||||
static float col2[4] = { 0.4f,0.7f,0.0f,0.5f };
|
||||
ImGui::ColorEdit3("color 1", col1);
|
||||
ImGui::ColorEdit4("color 2", col2);
|
||||
ImGui::Unindent();
|
||||
}
|
||||
|
||||
{
|
||||
ImGui::BulletText("Drag and drop to copy/swap items");
|
||||
ImGui::Indent();
|
||||
enum Mode
|
||||
{
|
||||
Mode_Copy,
|
||||
Mode_Move,
|
||||
Mode_Swap
|
||||
};
|
||||
static int mode = 0;
|
||||
if (ImGui::RadioButton("Copy", mode == Mode_Copy)) { mode = Mode_Copy; } ImGui::SameLine();
|
||||
if (ImGui::RadioButton("Move", mode == Mode_Move)) { mode = Mode_Move; } ImGui::SameLine();
|
||||
if (ImGui::RadioButton("Swap", mode == Mode_Swap)) { mode = Mode_Swap; }
|
||||
static const char* names[9] = { "Bobby", "Beatrice", "Betty", "Brianna", "Barry", "Bernard", "Bibi", "Blaine", "Bryn" };
|
||||
for (int n = 0; n < IM_ARRAYSIZE(names); n++)
|
||||
{
|
||||
ImGui::PushID(n);
|
||||
if ((n % 3) != 0)
|
||||
ImGui::SameLine();
|
||||
ImGui::Button(names[n], ImVec2(60,60));
|
||||
|
||||
// Our buttons are both drag sources and drag targets here!
|
||||
if (ImGui::BeginDragDropSource(ImGuiDragDropFlags_None))
|
||||
{
|
||||
ImGui::SetDragDropPayload("DND_DEMO_CELL", &n, sizeof(int)); // Set payload to carry the index of our item (could be anything)
|
||||
if (mode == Mode_Copy) { ImGui::Text("Copy %s", names[n]); } // Display preview (could be anything, e.g. when dragging an image we could decide to display the filename and a small preview of the image, etc.)
|
||||
if (mode == Mode_Move) { ImGui::Text("Move %s", names[n]); }
|
||||
if (mode == Mode_Swap) { ImGui::Text("Swap %s", names[n]); }
|
||||
ImGui::EndDragDropSource();
|
||||
}
|
||||
if (ImGui::BeginDragDropTarget())
|
||||
{
|
||||
if (const ImGuiPayload* payload = ImGui::AcceptDragDropPayload("DND_DEMO_CELL"))
|
||||
{
|
||||
IM_ASSERT(payload->DataSize == sizeof(int));
|
||||
int payload_n = *(const int*)payload->Data;
|
||||
if (mode == Mode_Copy)
|
||||
{
|
||||
names[n] = names[payload_n];
|
||||
}
|
||||
if (mode == Mode_Move)
|
||||
{
|
||||
names[n] = names[payload_n];
|
||||
names[payload_n] = "";
|
||||
}
|
||||
if (mode == Mode_Swap)
|
||||
{
|
||||
const char* tmp = names[n];
|
||||
names[n] = names[payload_n];
|
||||
names[payload_n] = tmp;
|
||||
}
|
||||
}
|
||||
ImGui::EndDragDropTarget();
|
||||
}
|
||||
ImGui::PopID();
|
||||
}
|
||||
ImGui::Unindent();
|
||||
}
|
||||
|
||||
ImGui::TreePop();
|
||||
}
|
||||
|
||||
if (ImGui::TreeNode("Active, Focused, Hovered & Focused Tests"))
|
||||
{
|
||||
// Display the value of IsItemHovered() and other common item state functions. Note that the flags can be combined.
|
||||
|
Loading…
Reference in New Issue
Block a user