|
|
@ -2969,7 +2969,7 @@ static inline bool IsWindowContentHoverable(ImGuiWindow* window, ImGuiHoveredFla
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Advance cursor given item size for layout.
|
|
|
|
// Advance cursor given item size for layout.
|
|
|
|
void ImGui::ItemSize(const ImVec2& size, float text_offset_y)
|
|
|
|
void ImGui::ItemSize(const ImVec2& size, float text_baseline_y)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
|
ImGuiWindow* window = g.CurrentWindow;
|
|
|
|
ImGuiWindow* window = g.CurrentWindow;
|
|
|
@ -2978,28 +2978,28 @@ void ImGui::ItemSize(const ImVec2& size, float text_offset_y)
|
|
|
|
|
|
|
|
|
|
|
|
// Always align ourselves on pixel boundaries
|
|
|
|
// Always align ourselves on pixel boundaries
|
|
|
|
const float line_height = ImMax(window->DC.CurrLineSize.y, size.y);
|
|
|
|
const float line_height = ImMax(window->DC.CurrLineSize.y, size.y);
|
|
|
|
const float text_base_offset = ImMax(window->DC.CurrLineTextBaseOffset, text_offset_y);
|
|
|
|
|
|
|
|
//if (g.IO.KeyAlt) window->DrawList->AddRect(window->DC.CursorPos, window->DC.CursorPos + ImVec2(size.x, line_height), IM_COL32(255,0,0,200)); // [DEBUG]
|
|
|
|
//if (g.IO.KeyAlt) window->DrawList->AddRect(window->DC.CursorPos, window->DC.CursorPos + ImVec2(size.x, line_height), IM_COL32(255,0,0,200)); // [DEBUG]
|
|
|
|
window->DC.CursorPosPrevLine.x = window->DC.CursorPos.x + size.x;
|
|
|
|
window->DC.CursorPosPrevLine.x = window->DC.CursorPos.x + size.x;
|
|
|
|
window->DC.CursorPosPrevLine.y = window->DC.CursorPos.y;
|
|
|
|
window->DC.CursorPosPrevLine.y = window->DC.CursorPos.y;
|
|
|
|
window->DC.CursorPos.x = (float)(int)(window->Pos.x + window->DC.Indent.x + window->DC.ColumnsOffset.x);
|
|
|
|
window->DC.CursorPos.x = (float)(int)(window->Pos.x + window->DC.Indent.x + window->DC.ColumnsOffset.x); // Next line
|
|
|
|
window->DC.CursorPos.y = (float)(int)(window->DC.CursorPos.y + line_height + g.Style.ItemSpacing.y);
|
|
|
|
window->DC.CursorPos.y = (float)(int)(window->DC.CursorPos.y + line_height + g.Style.ItemSpacing.y); // Next line
|
|
|
|
window->DC.CursorMaxPos.x = ImMax(window->DC.CursorMaxPos.x, window->DC.CursorPosPrevLine.x);
|
|
|
|
window->DC.CursorMaxPos.x = ImMax(window->DC.CursorMaxPos.x, window->DC.CursorPosPrevLine.x);
|
|
|
|
window->DC.CursorMaxPos.y = ImMax(window->DC.CursorMaxPos.y, window->DC.CursorPos.y - g.Style.ItemSpacing.y);
|
|
|
|
window->DC.CursorMaxPos.y = ImMax(window->DC.CursorMaxPos.y, window->DC.CursorPos.y - g.Style.ItemSpacing.y);
|
|
|
|
//if (g.IO.KeyAlt) window->DrawList->AddCircle(window->DC.CursorMaxPos, 3.0f, IM_COL32(255,0,0,255), 4); // [DEBUG]
|
|
|
|
//if (g.IO.KeyAlt) window->DrawList->AddCircle(window->DC.CursorMaxPos, 3.0f, IM_COL32(255,0,0,255), 4); // [DEBUG]
|
|
|
|
|
|
|
|
|
|
|
|
window->DC.PrevLineSize.y = line_height;
|
|
|
|
window->DC.PrevLineSize.y = line_height;
|
|
|
|
window->DC.PrevLineTextBaseOffset = text_base_offset;
|
|
|
|
window->DC.CurrLineSize.y = 0.0f;
|
|
|
|
window->DC.CurrLineSize.y = window->DC.CurrLineTextBaseOffset = 0.0f;
|
|
|
|
window->DC.PrevLineTextBaseOffset = ImMax(window->DC.CurrLineTextBaseOffset, text_baseline_y);
|
|
|
|
|
|
|
|
window->DC.CurrLineTextBaseOffset = 0.0f;
|
|
|
|
|
|
|
|
|
|
|
|
// Horizontal layout mode
|
|
|
|
// Horizontal layout mode
|
|
|
|
if (window->DC.LayoutType == ImGuiLayoutType_Horizontal)
|
|
|
|
if (window->DC.LayoutType == ImGuiLayoutType_Horizontal)
|
|
|
|
SameLine();
|
|
|
|
SameLine();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImGui::ItemSize(const ImRect& bb, float text_offset_y)
|
|
|
|
void ImGui::ItemSize(const ImRect& bb, float text_baseline_y)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ItemSize(bb.GetSize(), text_offset_y);
|
|
|
|
ItemSize(bb.GetSize(), text_baseline_y);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Declare item bounding box for clipping and interaction.
|
|
|
|
// Declare item bounding box for clipping and interaction.
|
|
|
|