|
@@ -962,13 +962,18 @@ static void ShowDemoWindowWidgets()
|
|
if (i == 0)
|
|
if (i == 0)
|
|
ImGui::SetNextItemOpen(true, ImGuiCond_Once);
|
|
ImGui::SetNextItemOpen(true, ImGuiCond_Once);
|
|
|
|
|
|
- if (ImGui::TreeNode((void*)(intptr_t)i, "Child %d", i))
|
|
|
|
|
|
+ // Here we use PushID() to generate a unique base ID, and then the "" used as TreeNode id won't conflict.
|
|
|
|
+ // An alternative to using 'PushID() + TreeNode("", ...)' to generate a unique ID is to use 'TreeNode((void*)(intptr_t)i, ...)',
|
|
|
|
+ // aka generate a dummy pointer-sized value to be hashed. The demo below uses that technique. Both are fine.
|
|
|
|
+ ImGui::PushID(i);
|
|
|
|
+ if (ImGui::TreeNode("", "Child %d", i))
|
|
{
|
|
{
|
|
ImGui::Text("blah blah");
|
|
ImGui::Text("blah blah");
|
|
ImGui::SameLine();
|
|
ImGui::SameLine();
|
|
if (ImGui::SmallButton("button")) {}
|
|
if (ImGui::SmallButton("button")) {}
|
|
ImGui::TreePop();
|
|
ImGui::TreePop();
|
|
}
|
|
}
|
|
|
|
+ ImGui::PopID();
|
|
}
|
|
}
|
|
ImGui::TreePop();
|
|
ImGui::TreePop();
|
|
}
|
|
}
|
|
@@ -986,7 +991,10 @@ static void ShowDemoWindowWidgets()
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_OpenOnDoubleClick", &base_flags, ImGuiTreeNodeFlags_OpenOnDoubleClick);
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_OpenOnDoubleClick", &base_flags, ImGuiTreeNodeFlags_OpenOnDoubleClick);
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAvailWidth", &base_flags, ImGuiTreeNodeFlags_SpanAvailWidth); ImGui::SameLine(); HelpMarker("Extend hit area to all available width instead of allowing more items to be laid out after the node.");
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAvailWidth", &base_flags, ImGuiTreeNodeFlags_SpanAvailWidth); ImGui::SameLine(); HelpMarker("Extend hit area to all available width instead of allowing more items to be laid out after the node.");
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanFullWidth", &base_flags, ImGuiTreeNodeFlags_SpanFullWidth);
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanFullWidth", &base_flags, ImGuiTreeNodeFlags_SpanFullWidth);
|
|
|
|
+ ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanTextWidth", &base_flags, ImGuiTreeNodeFlags_SpanTextWidth); ImGui::SameLine(); HelpMarker("Reduce hit area to the text label and a bit of margin.");
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAllColumns", &base_flags, ImGuiTreeNodeFlags_SpanAllColumns); ImGui::SameLine(); HelpMarker("For use in Tables only.");
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAllColumns", &base_flags, ImGuiTreeNodeFlags_SpanAllColumns); ImGui::SameLine(); HelpMarker("For use in Tables only.");
|
|
|
|
+ ImGui::CheckboxFlags("ImGuiTreeNodeFlags_AllowOverlap", &base_flags, ImGuiTreeNodeFlags_AllowOverlap);
|
|
|
|
+ ImGui::CheckboxFlags("ImGuiTreeNodeFlags_Framed", &base_flags, ImGuiTreeNodeFlags_Framed); ImGui::SameLine(); HelpMarker("Draw frame with background (e.g. for CollapsingHeader)");
|
|
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::Checkbox("Test tree node as drag source", &test_drag_and_drop);
|
|
ImGui::Text("Hello!");
|
|
ImGui::Text("Hello!");
|
|
@@ -1019,6 +1027,12 @@ static void ShowDemoWindowWidgets()
|
|
ImGui::Text("This is a drag and drop source");
|
|
ImGui::Text("This is a drag and drop source");
|
|
ImGui::EndDragDropSource();
|
|
ImGui::EndDragDropSource();
|
|
}
|
|
}
|
|
|
|
+ if (i == 2)
|
|
|
|
+ {
|
|
|
|
+ // Item 2 has an additional inline button to help demonstrate SpanTextWidth.
|
|
|
|
+ ImGui::SameLine();
|
|
|
|
+ if (ImGui::SmallButton("button")) {}
|
|
|
|
+ }
|
|
if (node_open)
|
|
if (node_open)
|
|
{
|
|
{
|
|
ImGui::BulletText("Blah blah\nBlah Blah");
|
|
ImGui::BulletText("Blah blah\nBlah Blah");
|
|
@@ -1882,7 +1896,6 @@ static void ShowDemoWindowWidgets()
|
|
ImGui::Checkbox("Animate", &animate);
|
|
ImGui::Checkbox("Animate", &animate);
|
|
|
|
|
|
// Plot as lines and plot as histogram
|
|
// Plot as lines and plot as histogram
|
|
- IMGUI_DEMO_MARKER("Widgets/Plotting/PlotLines, PlotHistogram");
|
|
|
|
static float arr[] = { 0.6f, 0.1f, 1.0f, 0.5f, 0.92f, 0.1f, 0.2f };
|
|
static float arr[] = { 0.6f, 0.1f, 1.0f, 0.5f, 0.92f, 0.1f, 0.2f };
|
|
ImGui::PlotLines("Frame Times", arr, IM_ARRAYSIZE(arr));
|
|
ImGui::PlotLines("Frame Times", arr, IM_ARRAYSIZE(arr));
|
|
ImGui::PlotHistogram("Histogram", arr, IM_ARRAYSIZE(arr), 0, NULL, 0.0f, 1.0f, ImVec2(0, 80.0f));
|
|
ImGui::PlotHistogram("Histogram", arr, IM_ARRAYSIZE(arr), 0, NULL, 0.0f, 1.0f, ImVec2(0, 80.0f));
|
|
@@ -1936,15 +1949,17 @@ static void ShowDemoWindowWidgets()
|
|
ImGui::PlotHistogram("Histogram", func, NULL, display_count, 0, NULL, -1.0f, 1.0f, ImVec2(0, 80));
|
|
ImGui::PlotHistogram("Histogram", func, NULL, display_count, 0, NULL, -1.0f, 1.0f, ImVec2(0, 80));
|
|
ImGui::Separator();
|
|
ImGui::Separator();
|
|
|
|
|
|
|
|
+ ImGui::TreePop();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ IMGUI_DEMO_MARKER("Widgets/Progress Bars");
|
|
|
|
+ if (ImGui::TreeNode("Progress Bars"))
|
|
|
|
+ {
|
|
// Animate a simple progress bar
|
|
// Animate a simple progress bar
|
|
- IMGUI_DEMO_MARKER("Widgets/Plotting/ProgressBar");
|
|
|
|
static float progress = 0.0f, progress_dir = 1.0f;
|
|
static float progress = 0.0f, progress_dir = 1.0f;
|
|
- if (animate)
|
|
|
|
- {
|
|
|
|
- progress += progress_dir * 0.4f * ImGui::GetIO().DeltaTime;
|
|
|
|
- if (progress >= +1.1f) { progress = +1.1f; progress_dir *= -1.0f; }
|
|
|
|
- if (progress <= -0.1f) { progress = -0.1f; progress_dir *= -1.0f; }
|
|
|
|
- }
|
|
|
|
|
|
+ progress += progress_dir * 0.4f * ImGui::GetIO().DeltaTime;
|
|
|
|
+ if (progress >= +1.1f) { progress = +1.1f; progress_dir *= -1.0f; }
|
|
|
|
+ if (progress <= -0.1f) { progress = -0.1f; progress_dir *= -1.0f; }
|
|
|
|
|
|
// Typically we would use ImVec2(-1.0f,0.0f) or ImVec2(-FLT_MIN,0.0f) to use all available width,
|
|
// Typically we would use ImVec2(-1.0f,0.0f) or ImVec2(-FLT_MIN,0.0f) to use all available width,
|
|
// or ImVec2(width,0.0f) for a specified width. ImVec2(0.0f,0.0f) uses ItemWidth.
|
|
// or ImVec2(width,0.0f) for a specified width. ImVec2(0.0f,0.0f) uses ItemWidth.
|
|
@@ -1956,6 +1971,13 @@ static void ShowDemoWindowWidgets()
|
|
char buf[32];
|
|
char buf[32];
|
|
sprintf(buf, "%d/%d", (int)(progress_saturated * 1753), 1753);
|
|
sprintf(buf, "%d/%d", (int)(progress_saturated * 1753), 1753);
|
|
ImGui::ProgressBar(progress, ImVec2(0.f, 0.f), buf);
|
|
ImGui::ProgressBar(progress, ImVec2(0.f, 0.f), buf);
|
|
|
|
+
|
|
|
|
+ // Pass an animated negative value, e.g. -1.0f * (float)ImGui::GetTime() is the recommended value.
|
|
|
|
+ // Adjust the factor if you want to adjust the animation speed.
|
|
|
|
+ ImGui::ProgressBar(-1.0f * (float)ImGui::GetTime(), ImVec2(0.0f, 0.0f), "Searching..");
|
|
|
|
+ ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x);
|
|
|
|
+ ImGui::Text("Indeterminate");
|
|
|
|
+
|
|
ImGui::TreePop();
|
|
ImGui::TreePop();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -5217,7 +5239,8 @@ static void ShowDemoWindowTables()
|
|
static ImGuiTableFlags flags = ImGuiTableFlags_BordersV | ImGuiTableFlags_BordersOuterH | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_NoBordersInBody;
|
|
static ImGuiTableFlags flags = ImGuiTableFlags_BordersV | ImGuiTableFlags_BordersOuterH | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_NoBordersInBody;
|
|
|
|
|
|
static ImGuiTreeNodeFlags tree_node_flags = ImGuiTreeNodeFlags_SpanAllColumns;
|
|
static ImGuiTreeNodeFlags tree_node_flags = ImGuiTreeNodeFlags_SpanAllColumns;
|
|
- ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanFullWidth", &tree_node_flags, ImGuiTreeNodeFlags_SpanFullWidth);
|
|
|
|
|
|
+ ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanFullWidth", &tree_node_flags, ImGuiTreeNodeFlags_SpanFullWidth);
|
|
|
|
+ ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanTextWidth", &tree_node_flags, ImGuiTreeNodeFlags_SpanTextWidth);
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAllColumns", &tree_node_flags, ImGuiTreeNodeFlags_SpanAllColumns);
|
|
ImGui::CheckboxFlags("ImGuiTreeNodeFlags_SpanAllColumns", &tree_node_flags, ImGuiTreeNodeFlags_SpanAllColumns);
|
|
|
|
|
|
HelpMarker("See \"Columns flags\" section to configure how indentation is applied to individual columns.");
|
|
HelpMarker("See \"Columns flags\" section to configure how indentation is applied to individual columns.");
|