|
|
@@ -213,7 +213,7 @@ void ImGui::TextEx(const char* text, const char* text_end, ImGuiTextFlags flags)
|
|
|
text_size.y = (pos - text_pos).y;
|
|
|
|
|
|
ImRect bb(text_pos, text_pos + text_size);
|
|
|
- ItemSize(text_size);
|
|
|
+ ItemSize(text_size, 0.0f);
|
|
|
ItemAdd(bb, 0);
|
|
|
}
|
|
|
else
|
|
|
@@ -222,7 +222,7 @@ void ImGui::TextEx(const char* text, const char* text_end, ImGuiTextFlags flags)
|
|
|
const ImVec2 text_size = CalcTextSize(text_begin, text_end, false, wrap_width);
|
|
|
|
|
|
ImRect bb(text_pos, text_pos + text_size);
|
|
|
- ItemSize(text_size);
|
|
|
+ ItemSize(text_size, 0.0f);
|
|
|
if (!ItemAdd(bb, 0))
|
|
|
return;
|
|
|
|
|
|
@@ -359,17 +359,18 @@ void ImGui::BulletTextV(const char* fmt, va_list args)
|
|
|
const char* text_begin = g.TempBuffer;
|
|
|
const char* text_end = text_begin + ImFormatStringV(g.TempBuffer, IM_ARRAYSIZE(g.TempBuffer), fmt, args);
|
|
|
const ImVec2 label_size = CalcTextSize(text_begin, text_end, false);
|
|
|
- const float text_base_offset_y = ImMax(0.0f, window->DC.CurrLineTextBaseOffset); // Latch before ItemSize changes it
|
|
|
- const float line_height = ImMax(ImMin(window->DC.CurrLineSize.y, g.FontSize + g.Style.FramePadding.y*2), g.FontSize);
|
|
|
- const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(g.FontSize + (label_size.x > 0.0f ? (label_size.x + style.FramePadding.x*2) : 0.0f), ImMax(line_height, label_size.y))); // Empty text doesn't add padding
|
|
|
- ItemSize(bb);
|
|
|
+ const ImVec2 total_size = ImVec2(g.FontSize + (label_size.x > 0.0f ? (label_size.x + style.FramePadding.x * 2) : 0.0f), label_size.y); // Empty text doesn't add padding
|
|
|
+ ImVec2 pos = window->DC.CursorPos;
|
|
|
+ pos.y += window->DC.CurrLineTextBaseOffset;
|
|
|
+ ItemSize(total_size, 0.0f);
|
|
|
+ const ImRect bb(pos, pos + total_size);
|
|
|
if (!ItemAdd(bb, 0))
|
|
|
return;
|
|
|
|
|
|
// Render
|
|
|
ImU32 text_col = GetColorU32(ImGuiCol_Text);
|
|
|
- RenderBullet(window->DrawList, bb.Min + ImVec2(style.FramePadding.x + g.FontSize*0.5f, line_height*0.5f), text_col);
|
|
|
- RenderText(bb.Min+ImVec2(g.FontSize + style.FramePadding.x*2, text_base_offset_y), text_begin, text_end, false);
|
|
|
+ RenderBullet(window->DrawList, bb.Min + ImVec2(style.FramePadding.x + g.FontSize*0.5f, g.FontSize*0.5f), text_col);
|
|
|
+ RenderText(bb.Min + ImVec2(g.FontSize + style.FramePadding.x * 2, 0.0f), text_begin, text_end, false);
|
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
@@ -691,7 +692,7 @@ bool ImGui::ArrowButtonEx(const char* str_id, ImGuiDir dir, ImVec2 size, ImGuiBu
|
|
|
const ImGuiID id = window->GetID(str_id);
|
|
|
const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + size);
|
|
|
const float default_size = GetFrameHeight();
|
|
|
- ItemSize(size, (size.y >= default_size) ? g.Style.FramePadding.y : 0.0f);
|
|
|
+ ItemSize(size, (size.y >= default_size) ? g.Style.FramePadding.y : -1.0f);
|
|
|
if (!ItemAdd(bb, id))
|
|
|
return false;
|
|
|
|
|
|
@@ -5226,7 +5227,7 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
const ImGuiStyle& style = g.Style;
|
|
|
const bool display_frame = (flags & ImGuiTreeNodeFlags_Framed) != 0;
|
|
|
- const ImVec2 padding = (display_frame || (flags & ImGuiTreeNodeFlags_FramePadding)) ? style.FramePadding : ImVec2(style.FramePadding.x, 0.0f);
|
|
|
+ const ImVec2 padding = (display_frame || (flags & ImGuiTreeNodeFlags_FramePadding)) ? style.FramePadding : ImVec2(style.FramePadding.x, ImMin(window->DC.CurrLineTextBaseOffset, style.FramePadding.y));
|
|
|
|
|
|
if (!label_end)
|
|
|
label_end = FindRenderedTextEnd(label);
|
|
|
@@ -5251,7 +5252,7 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
|
|
|
const float text_offset_y = ImMax(padding.y, window->DC.CurrLineTextBaseOffset); // Latch before ItemSize changes it
|
|
|
const float text_width = g.FontSize + (label_size.x > 0.0f ? label_size.x + padding.x*2 : 0.0f); // Include collapser
|
|
|
ImVec2 text_pos(window->DC.CursorPos.x + text_offset_x, window->DC.CursorPos.y + text_offset_y);
|
|
|
- ItemSize(ImVec2(text_width, frame_height), text_offset_y);
|
|
|
+ ItemSize(ImVec2(text_width, frame_height), padding.y);
|
|
|
|
|
|
// For regular tree nodes, we arbitrary allow to click past 2 worth of ItemSpacing
|
|
|
ImRect interact_bb = frame_bb;
|
|
|
@@ -5522,7 +5523,7 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl
|
|
|
ImVec2 pos = window->DC.CursorPos;
|
|
|
pos.y += window->DC.CurrLineTextBaseOffset;
|
|
|
ImRect bb_inner(pos, pos + size);
|
|
|
- ItemSize(size);
|
|
|
+ ItemSize(size, 0.0f);
|
|
|
|
|
|
// Fill horizontal space.
|
|
|
ImVec2 window_padding = window->WindowPadding;
|
|
|
@@ -6453,7 +6454,7 @@ bool ImGui::BeginTabBarEx(ImGuiTabBar* tab_bar, const ImRect& tab_bar_bb, ImG
|
|
|
tab_bar->FramePadding = g.Style.FramePadding;
|
|
|
|
|
|
// Layout
|
|
|
- ItemSize(ImVec2(tab_bar->OffsetMaxIdeal, tab_bar->BarRect.GetHeight()));
|
|
|
+ ItemSize(ImVec2(tab_bar->OffsetMaxIdeal, tab_bar->BarRect.GetHeight()), tab_bar->FramePadding.y);
|
|
|
window->DC.CursorPos.x = tab_bar->BarRect.Min.x;
|
|
|
|
|
|
// Draw separator
|