|
|
@@ -193,8 +193,9 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
|
|
if (no_nav) window_flags |= ImGuiWindowFlags_NoNav;
|
|
|
if (no_close) p_open = NULL; // Don't pass our bool* to Begin
|
|
|
|
|
|
- // We specify a default size in case there's no data in the .ini file. Typically this isn't required! We only do it to make the Demo applications a little more welcoming.
|
|
|
- ImGui::SetNextWindowSize(ImVec2(550,680), ImGuiCond_FirstUseEver);
|
|
|
+ // We specify a default position/size in case there's no data in the .ini file. Typically this isn't required! We only do it to make the Demo applications a little more welcoming.
|
|
|
+ ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver);
|
|
|
+ ImGui::SetNextWindowSize(ImVec2(550, 680), ImGuiCond_FirstUseEver);
|
|
|
|
|
|
// Main body of the Demo window starts here.
|
|
|
if (!ImGui::Begin("ImGui Demo", p_open, window_flags))
|
|
|
@@ -1349,6 +1350,25 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
|
|
if (embed_all_inside_a_child_window)
|
|
|
EndChild();
|
|
|
|
|
|
+ // Calling IsItemHovered() after begin returns the hovered status of the title bar.
|
|
|
+ // This is useful in particular if you want to create a context menu (with BeginPopupContextItem) associated to the title bar of a window.
|
|
|
+ static bool test_window = false;
|
|
|
+ ImGui::Checkbox("Hovered/Active tests after Begin() for title bar testing", &test_window);
|
|
|
+ if (test_window)
|
|
|
+ {
|
|
|
+ ImGui::Begin("Title bar Hovered/Active tests", &test_window);
|
|
|
+ if (ImGui::BeginPopupContextItem()) // <-- This is using IsItemHovered()
|
|
|
+ {
|
|
|
+ if (ImGui::MenuItem("Close")) { test_window = false; }
|
|
|
+ ImGui::EndPopup();
|
|
|
+ }
|
|
|
+ ImGui::Text(
|
|
|
+ "IsItemHovered() after begin = %d (== is title bar hovered)\n"
|
|
|
+ "IsItemActive() after begin = %d (== is window being clicked/moved)\n",
|
|
|
+ ImGui::IsItemHovered(), ImGui::IsItemActive());
|
|
|
+ ImGui::End();
|
|
|
+ }
|
|
|
+
|
|
|
ImGui::TreePop();
|
|
|
}
|
|
|
}
|
|
|
@@ -3365,28 +3385,28 @@ static void ShowExampleAppCustomRendering(bool* p_open)
|
|
|
for (int n = 0; n < 2; n++)
|
|
|
{
|
|
|
float curr_thickness = (n == 0) ? 1.0f : thickness;
|
|
|
- draw_list->AddCircle(ImVec2(x + sz*0.5f, y + sz*0.5f), sz*0.5f, col32, 20, curr_thickness); x += sz + spacing;
|
|
|
- draw_list->AddRect(ImVec2(x, y), ImVec2(x + sz, y + sz), col32, 0.0f, ImDrawCornerFlags_All, curr_thickness); x += sz + spacing;
|
|
|
- draw_list->AddRect(ImVec2(x, y), ImVec2(x + sz, y + sz), col32, 10.0f, ImDrawCornerFlags_All, curr_thickness); x += sz + spacing;
|
|
|
- draw_list->AddRect(ImVec2(x, y), ImVec2(x + sz, y + sz), col32, 10.0f, ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight, curr_thickness); x += sz + spacing;
|
|
|
- draw_list->AddTriangle(ImVec2(x + sz*0.5f, y), ImVec2(x + sz, y + sz - 0.5f), ImVec2(x, y + sz - 0.5f), col32, curr_thickness); x += sz + spacing;
|
|
|
- draw_list->AddLine(ImVec2(x, y), ImVec2(x + sz, y), col32, curr_thickness); x += sz + spacing; // Horizontal line (note: drawing a filled rectangle will be faster!)
|
|
|
- draw_list->AddLine(ImVec2(x, y), ImVec2(x, y + sz), col32, curr_thickness); x += spacing; // Vertical line (note: drawing a filled rectangle will be faster!)
|
|
|
- draw_list->AddLine(ImVec2(x, y), ImVec2(x + sz, y + sz), col32, curr_thickness); x += sz + spacing; // Diagonal line
|
|
|
- draw_list->AddBezierCurve(ImVec2(x, y), ImVec2(x + sz*1.3f, y + sz*0.3f), ImVec2(x + sz - sz*1.3f, y + sz - sz*0.3f), ImVec2(x + sz, y + sz), col32, curr_thickness);
|
|
|
+ draw_list->AddCircle(ImVec2(x+sz*0.5f, y+sz*0.5f), sz*0.5f, col32, 20, curr_thickness); x += sz+spacing;
|
|
|
+ draw_list->AddRect(ImVec2(x, y), ImVec2(x+sz, y+sz), col32, 0.0f, ImDrawCornerFlags_All, curr_thickness); x += sz+spacing;
|
|
|
+ draw_list->AddRect(ImVec2(x, y), ImVec2(x+sz, y+sz), col32, 10.0f, ImDrawCornerFlags_All, curr_thickness); x += sz+spacing;
|
|
|
+ draw_list->AddRect(ImVec2(x, y), ImVec2(x+sz, y+sz), col32, 10.0f, ImDrawCornerFlags_TopLeft|ImDrawCornerFlags_BotRight, curr_thickness); x += sz+spacing;
|
|
|
+ draw_list->AddTriangle(ImVec2(x+sz*0.5f, y), ImVec2(x+sz,y+sz-0.5f), ImVec2(x,y+sz-0.5f), col32, curr_thickness); x += sz+spacing;
|
|
|
+ draw_list->AddLine(ImVec2(x, y), ImVec2(x+sz, y ), col32, curr_thickness); x += sz+spacing; // Horizontal line (note: drawing a filled rectangle will be faster!)
|
|
|
+ draw_list->AddLine(ImVec2(x, y), ImVec2(x, y+sz), col32, curr_thickness); x += spacing; // Vertical line (note: drawing a filled rectangle will be faster!)
|
|
|
+ draw_list->AddLine(ImVec2(x, y), ImVec2(x+sz, y+sz), col32, curr_thickness); x += sz+spacing; // Diagonal line
|
|
|
+ draw_list->AddBezierCurve(ImVec2(x, y), ImVec2(x+sz*1.3f,y+sz*0.3f), ImVec2(x+sz-sz*1.3f,y+sz-sz*0.3f), ImVec2(x+sz, y+sz), col32, curr_thickness);
|
|
|
x = p.x + 4;
|
|
|
- y += sz + spacing;
|
|
|
- }
|
|
|
- draw_list->AddCircleFilled(ImVec2(x + sz*0.5f, y + sz*0.5f), sz*0.5f, col32, 32); x += sz + spacing;
|
|
|
- draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + sz, y + sz), col32); x += sz + spacing;
|
|
|
- draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + sz, y + sz), col32, 10.0f); x += sz + spacing;
|
|
|
- draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + sz, y + sz), col32, 10.0f, ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight); x += sz + spacing;
|
|
|
- draw_list->AddTriangleFilled(ImVec2(x + sz*0.5f, y), ImVec2(x + sz, y + sz - 0.5f), ImVec2(x, y + sz - 0.5f), col32); x += sz + spacing;
|
|
|
- draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + sz, y + thickness), col32); x += sz + spacing; // Horizontal line (faster than AddLine, but only handle integer thickness)
|
|
|
- draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + thickness, y + sz), col32); x += spacing + spacing; // Vertical line (faster than AddLine, but only handle integer thickness)
|
|
|
- draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + 1, y + 1), col32); x += sz; // Pixel (faster than AddLine)
|
|
|
- draw_list->AddRectFilledMultiColor(ImVec2(x, y), ImVec2(x + sz, y + sz), IM_COL32(0, 0, 0, 255), IM_COL32(255, 0, 0, 255), IM_COL32(255, 255, 0, 255), IM_COL32(0, 255, 0, 255));
|
|
|
- ImGui::Dummy(ImVec2((sz + spacing) * 8, (sz + spacing) * 3));
|
|
|
+ y += sz+spacing;
|
|
|
+ }
|
|
|
+ draw_list->AddCircleFilled(ImVec2(x+sz*0.5f, y+sz*0.5f), sz*0.5f, col32, 32); x += sz+spacing;
|
|
|
+ draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x+sz, y+sz), col32); x += sz+spacing;
|
|
|
+ draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x+sz, y+sz), col32, 10.0f); x += sz+spacing;
|
|
|
+ draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x+sz, y+sz), col32, 10.0f, ImDrawCornerFlags_TopLeft|ImDrawCornerFlags_BotRight); x += sz+spacing;
|
|
|
+ draw_list->AddTriangleFilled(ImVec2(x+sz*0.5f, y), ImVec2(x+sz,y+sz-0.5f), ImVec2(x,y+sz-0.5f), col32); x += sz+spacing;
|
|
|
+ draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x+sz, y+thickness), col32); x += sz+spacing; // Horizontal line (faster than AddLine, but only handle integer thickness)
|
|
|
+ draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x+thickness, y+sz), col32); x += spacing+spacing; // Vertical line (faster than AddLine, but only handle integer thickness)
|
|
|
+ draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x+1, y+1), col32); x += sz; // Pixel (faster than AddLine)
|
|
|
+ draw_list->AddRectFilledMultiColor(ImVec2(x, y), ImVec2(x+sz, y+sz), IM_COL32(0,0,0,255), IM_COL32(255,0,0,255), IM_COL32(255,255,0,255), IM_COL32(0,255,0,255));
|
|
|
+ ImGui::Dummy(ImVec2((sz+spacing)*8, (sz+spacing)*3));
|
|
|
}
|
|
|
ImGui::Separator();
|
|
|
{
|