|
@@ -9879,63 +9879,68 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
|
|
// Horizontal separating line.
|
|
// Horizontal separating line.
|
|
void ImGui::Separator()
|
|
void ImGui::Separator()
|
|
{
|
|
{
|
|
- ImGuiContext& g = *GImGui;
|
|
|
|
ImGuiWindow* window = GetCurrentWindow();
|
|
ImGuiWindow* window = GetCurrentWindow();
|
|
if (window->SkipItems)
|
|
if (window->SkipItems)
|
|
return;
|
|
return;
|
|
|
|
+ ImGuiContext& g = *GImGui;
|
|
|
|
|
|
ImGuiWindowFlags flags = 0;
|
|
ImGuiWindowFlags flags = 0;
|
|
if ((flags & (ImGuiSeparatorFlags_Horizontal | ImGuiSeparatorFlags_Vertical)) == 0)
|
|
if ((flags & (ImGuiSeparatorFlags_Horizontal | ImGuiSeparatorFlags_Vertical)) == 0)
|
|
|
|
+ flags |= (window->DC.LayoutType == ImGuiLayoutType_Horizontal) ? ImGuiSeparatorFlags_Vertical : ImGuiSeparatorFlags_Horizontal;
|
|
|
|
+ IM_ASSERT(ImIsPowerOfTwo((int)(flags & (ImGuiSeparatorFlags_Horizontal | ImGuiSeparatorFlags_Vertical)))); // Check that only 1 option is selected
|
|
|
|
+ if (flags & ImGuiSeparatorFlags_Vertical)
|
|
{
|
|
{
|
|
- if (window->DC.LayoutType == ImGuiLayoutType_Horizontal)
|
|
|
|
- flags |= ImGuiSeparatorFlags_Vertical;
|
|
|
|
- else
|
|
|
|
- flags |= ImGuiSeparatorFlags_Horizontal;
|
|
|
|
|
|
+ VerticalSeparator();
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
- IM_ASSERT(ImIsPowerOfTwo((int)(flags & (ImGuiSeparatorFlags_Horizontal | ImGuiSeparatorFlags_Vertical)))); // Check that only 1 option is selected
|
|
|
|
|
|
|
|
- if (flags & ImGuiSeparatorFlags_Horizontal)
|
|
|
|
- {
|
|
|
|
- if (window->DC.ColumnsCount > 1)
|
|
|
|
- PopClipRect();
|
|
|
|
|
|
+ // Horizontal Separator
|
|
|
|
+ if (window->DC.ColumnsCount > 1)
|
|
|
|
+ PopClipRect();
|
|
|
|
|
|
- float x1 = window->Pos.x;
|
|
|
|
- float x2 = window->Pos.x + window->Size.x;
|
|
|
|
- if (!window->DC.GroupStack.empty())
|
|
|
|
- x1 += window->DC.IndentX;
|
|
|
|
|
|
+ float x1 = window->Pos.x;
|
|
|
|
+ float x2 = window->Pos.x + window->Size.x;
|
|
|
|
+ if (!window->DC.GroupStack.empty())
|
|
|
|
+ x1 += window->DC.IndentX;
|
|
|
|
|
|
- const ImRect bb(ImVec2(x1, window->DC.CursorPos.y), ImVec2(x2, window->DC.CursorPos.y+1.0f));
|
|
|
|
- ItemSize(ImVec2(0.0f, 0.0f)); // NB: we don't provide our width so that it doesn't get feed back into AutoFit, we don't provide height to not alter layout.
|
|
|
|
- if (!ItemAdd(bb, NULL))
|
|
|
|
- {
|
|
|
|
- if (window->DC.ColumnsCount > 1)
|
|
|
|
- PushColumnClipRect();
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
|
|
+ const ImRect bb(ImVec2(x1, window->DC.CursorPos.y), ImVec2(x2, window->DC.CursorPos.y+1.0f));
|
|
|
|
+ ItemSize(ImVec2(0.0f, 0.0f)); // NB: we don't provide our width so that it doesn't get feed back into AutoFit, we don't provide height to not alter layout.
|
|
|
|
+ if (!ItemAdd(bb, NULL))
|
|
|
|
+ {
|
|
|
|
+ if (window->DC.ColumnsCount > 1)
|
|
|
|
+ PushColumnClipRect();
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
|
|
- window->DrawList->AddLine(bb.Min, ImVec2(bb.Max.x,bb.Min.y), GetColorU32(ImGuiCol_Separator));
|
|
|
|
|
|
+ window->DrawList->AddLine(bb.Min, ImVec2(bb.Max.x,bb.Min.y), GetColorU32(ImGuiCol_Separator));
|
|
|
|
|
|
- if (g.LogEnabled)
|
|
|
|
|
|
+ if (g.LogEnabled)
|
|
LogRenderedText(NULL, IM_NEWLINE "--------------------------------");
|
|
LogRenderedText(NULL, IM_NEWLINE "--------------------------------");
|
|
|
|
|
|
- if (window->DC.ColumnsCount > 1)
|
|
|
|
- {
|
|
|
|
- PushColumnClipRect();
|
|
|
|
- window->DC.ColumnsCellMinY = window->DC.CursorPos.y;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- else if (flags & ImGuiSeparatorFlags_Vertical)
|
|
|
|
|
|
+ if (window->DC.ColumnsCount > 1)
|
|
{
|
|
{
|
|
- const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(1.0f, window->DC.CurrentLineHeight));
|
|
|
|
- ItemSize(ImVec2(bb.GetWidth(), 0.0f));
|
|
|
|
- if (!ItemAdd(bb, NULL))
|
|
|
|
- return;
|
|
|
|
|
|
+ PushColumnClipRect();
|
|
|
|
+ window->DC.ColumnsCellMinY = window->DC.CursorPos.y;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
- window->DrawList->AddLine(ImVec2(bb.Min.x, bb.Min.y), ImVec2(bb.Min.x, bb.Max.y), GetColorU32(ImGuiCol_Separator));
|
|
|
|
|
|
+void ImGui::VerticalSeparator()
|
|
|
|
+{
|
|
|
|
+ ImGuiWindow* window = GetCurrentWindow();
|
|
|
|
+ if (window->SkipItems)
|
|
|
|
+ return;
|
|
|
|
+ ImGuiContext& g = *GImGui;
|
|
|
|
|
|
- if (g.LogEnabled)
|
|
|
|
- LogText("|");
|
|
|
|
- }
|
|
|
|
|
|
+ float y1 = window->DC.CursorPos.y;
|
|
|
|
+ float y2 = window->DC.CursorPos.y + window->DC.CurrentLineHeight;
|
|
|
|
+ const ImRect bb(ImVec2(window->DC.CursorPos.x, y1), ImVec2(window->DC.CursorPos.x + 1.0f, y2));
|
|
|
|
+ ItemSize(ImVec2(bb.GetWidth(), 0.0f));
|
|
|
|
+ if (!ItemAdd(bb, NULL))
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ window->DrawList->AddLine(ImVec2(bb.Min.x, bb.Min.y), ImVec2(bb.Min.x, bb.Max.y), GetColorU32(ImGuiCol_Separator));
|
|
|
|
+ if (g.LogEnabled)
|
|
|
|
+ LogText(" |");
|
|
}
|
|
}
|
|
|
|
|
|
void ImGui::Spacing()
|
|
void ImGui::Spacing()
|