|
@@ -1034,16 +1034,18 @@ static void ShowDemoWindowWidgets()
|
|
|
|
|
|
ImGui::Text("Color button with Custom Picker Popup:");
|
|
|
|
|
|
- // Generate a dummy palette
|
|
|
- static bool saved_palette_inited = false;
|
|
|
- static ImVec4 saved_palette[32];
|
|
|
- if (!saved_palette_inited)
|
|
|
+ // Generate a dummy default palette. The palette will persist and can be edited.
|
|
|
+ static bool saved_palette_init = true;
|
|
|
+ static ImVec4 saved_palette[32] = { };
|
|
|
+ if (saved_palette_init)
|
|
|
+ {
|
|
|
for (int n = 0; n < IM_ARRAYSIZE(saved_palette); n++)
|
|
|
{
|
|
|
ImGui::ColorConvertHSVtoRGB(n / 31.0f, 0.8f, 0.8f, saved_palette[n].x, saved_palette[n].y, saved_palette[n].z);
|
|
|
saved_palette[n].w = 1.0f; // Alpha
|
|
|
}
|
|
|
- saved_palette_inited = true;
|
|
|
+ saved_palette_init = false;
|
|
|
+ }
|
|
|
|
|
|
static ImVec4 backup_color;
|
|
|
bool open_popup = ImGui::ColorButton("MyColor##3b", color, misc_flags);
|
|
@@ -1056,12 +1058,12 @@ static void ShowDemoWindowWidgets()
|
|
|
}
|
|
|
if (ImGui::BeginPopup("mypicker"))
|
|
|
{
|
|
|
- // FIXME: Adding a drag and drop example here would be perfect!
|
|
|
ImGui::Text("MY CUSTOM COLOR PICKER WITH AN AMAZING PALETTE!");
|
|
|
ImGui::Separator();
|
|
|
ImGui::ColorPicker4("##picker", (float*)&color, misc_flags | ImGuiColorEditFlags_NoSidePreview | ImGuiColorEditFlags_NoSmallPreview);
|
|
|
ImGui::SameLine();
|
|
|
- ImGui::BeginGroup();
|
|
|
+
|
|
|
+ ImGui::BeginGroup(); // Lock X position
|
|
|
ImGui::Text("Current");
|
|
|
ImGui::ColorButton("##current", color, ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_AlphaPreviewHalf, ImVec2(60,40));
|
|
|
ImGui::Text("Previous");
|
|
@@ -1077,6 +1079,8 @@ static void ShowDemoWindowWidgets()
|
|
|
if (ImGui::ColorButton("##palette", saved_palette[n], ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoTooltip, ImVec2(20,20)))
|
|
|
color = ImVec4(saved_palette[n].x, saved_palette[n].y, saved_palette[n].z, color.w); // Preserve alpha!
|
|
|
|
|
|
+ // Allow user to drop colors into each palette entry
|
|
|
+ // (Note that ColorButton is already a drag source by default, unless using ImGuiColorEditFlags_NoDragDrop)
|
|
|
if (ImGui::BeginDragDropTarget())
|
|
|
{
|
|
|
if (const ImGuiPayload* payload = ImGui::AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_3F))
|