|
@@ -9739,7 +9739,6 @@ bool ImGui::DragFloatRange2(const char* label, float* v_current_min, float* v_cu
|
|
|
TextUnformatted(label, FindRenderedTextEnd(label));
|
|
|
EndGroup();
|
|
|
PopID();
|
|
|
-
|
|
|
return value_changed;
|
|
|
}
|
|
|
|
|
@@ -10098,9 +10097,7 @@ bool ImGui::RadioButton(const char* label, int* v, int v_button)
|
|
|
{
|
|
|
const bool pressed = RadioButton(label, *v == v_button);
|
|
|
if (pressed)
|
|
|
- {
|
|
|
*v = v_button;
|
|
|
- }
|
|
|
return pressed;
|
|
|
}
|
|
|
|
|
@@ -10381,7 +10378,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
|
|
const bool is_password = (flags & ImGuiInputTextFlags_Password) != 0;
|
|
|
const bool is_undoable = (flags & ImGuiInputTextFlags_NoUndoRedo) == 0;
|
|
|
|
|
|
- if (is_multiline) // Open group before calling GetID() because groups tracks id created during their spawn
|
|
|
+ if (is_multiline) // Open group before calling GetID() because groups tracks id created within their scope,
|
|
|
BeginGroup();
|
|
|
const ImGuiID id = window->GetID(label);
|
|
|
const ImVec2 label_size = CalcTextSize(label, NULL, true);
|
|
@@ -11090,7 +11087,6 @@ bool ImGui::InputScalarN(const char* label, ImGuiDataType data_type, void* v, in
|
|
|
|
|
|
TextUnformatted(label, FindRenderedTextEnd(label));
|
|
|
EndGroup();
|
|
|
-
|
|
|
return value_changed;
|
|
|
}
|
|
|
|
|
@@ -11468,6 +11464,7 @@ bool ImGui::Selectable(const char* label, bool* p_selected, ImGuiSelectableFlags
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+// FIXME: Rename to BeginListBox()
|
|
|
// Helper to calculate the size of a listbox and display a label on the right.
|
|
|
// Tip: To have a list filling the entire window width, PushItemWidth(-1) and pass an empty label "##empty"
|
|
|
bool ImGui::ListBoxHeader(const char* label, const ImVec2& size_arg)
|
|
@@ -11495,6 +11492,7 @@ bool ImGui::ListBoxHeader(const char* label, const ImVec2& size_arg)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+// FIXME: Rename to BeginListBox()
|
|
|
bool ImGui::ListBoxHeader(const char* label, int items_count, int height_in_items)
|
|
|
{
|
|
|
// Size default to hold ~7 items. Fractional number of items helps seeing that we can scroll down/up without looking at scrollbar.
|
|
@@ -11511,6 +11509,7 @@ bool ImGui::ListBoxHeader(const char* label, int items_count, int height_in_item
|
|
|
return ListBoxHeader(label, size);
|
|
|
}
|
|
|
|
|
|
+// FIXME: Rename to EndListBox()
|
|
|
void ImGui::ListBoxFooter()
|
|
|
{
|
|
|
ImGuiWindow* parent_window = GetCurrentWindow()->ParentWindow;
|
|
@@ -11658,7 +11657,7 @@ bool ImGui::BeginMenuBar()
|
|
|
return false;
|
|
|
|
|
|
IM_ASSERT(!window->DC.MenuBarAppending);
|
|
|
- BeginGroup(); // Save position
|
|
|
+ BeginGroup(); // Backup position on layer 0
|
|
|
PushID("##menubar");
|
|
|
|
|
|
// We don't clip with current window clipping rectangle as it is already set to the area below. However we clip with window full rect.
|
|
@@ -11710,7 +11709,7 @@ void ImGui::EndMenuBar()
|
|
|
PopID();
|
|
|
window->DC.MenuBarOffset.x = window->DC.CursorPos.x - window->MenuBarRect().Min.x; // Save horizontal position so next append can reuse it. This is kinda equivalent to a per-layer CursorPos.
|
|
|
window->DC.GroupStack.back().AdvanceCursor = false;
|
|
|
- EndGroup();
|
|
|
+ EndGroup(); // Restore position on layer 0
|
|
|
window->DC.LayoutType = ImGuiLayoutType_Vertical;
|
|
|
window->DC.NavLayerCurrent--;
|
|
|
window->DC.NavLayerCurrentMask >>= 1;
|
|
@@ -12792,6 +12791,7 @@ bool ImGui::IsRectVisible(const ImVec2& rect_min, const ImVec2& rect_max)
|
|
|
// Lock horizontal starting position + capture group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.)
|
|
|
void ImGui::BeginGroup()
|
|
|
{
|
|
|
+ ImGuiContext& g = *GImGui;
|
|
|
ImGuiWindow* window = GetCurrentWindow();
|
|
|
|
|
|
window->DC.GroupStack.resize(window->DC.GroupStack.Size + 1);
|
|
@@ -12803,21 +12803,20 @@ void ImGui::BeginGroup()
|
|
|
group_data.BackupCurrentLineHeight = window->DC.CurrentLineHeight;
|
|
|
group_data.BackupCurrentLineTextBaseOffset = window->DC.CurrentLineTextBaseOffset;
|
|
|
group_data.BackupLogLinePosY = window->DC.LogLinePosY;
|
|
|
- group_data.BackupActiveIdIsAlive = GImGui->ActiveIdIsAlive;
|
|
|
+ group_data.BackupActiveIdIsAlive = g.ActiveIdIsAlive;
|
|
|
group_data.AdvanceCursor = true;
|
|
|
|
|
|
window->DC.GroupOffsetX = window->DC.CursorPos.x - window->Pos.x - window->DC.ColumnsOffsetX;
|
|
|
window->DC.IndentX = window->DC.GroupOffsetX;
|
|
|
window->DC.CursorMaxPos = window->DC.CursorPos;
|
|
|
window->DC.CurrentLineHeight = 0.0f;
|
|
|
- window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f;
|
|
|
+ window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f; // To enforce Log carriage return
|
|
|
}
|
|
|
|
|
|
void ImGui::EndGroup()
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
ImGuiWindow* window = GetCurrentWindow();
|
|
|
-
|
|
|
IM_ASSERT(!window->DC.GroupStack.empty()); // Mismatched BeginGroup()/EndGroup() calls
|
|
|
|
|
|
ImGuiGroupData& group_data = window->DC.GroupStack.back();
|
|
@@ -12827,11 +12826,11 @@ void ImGui::EndGroup()
|
|
|
|
|
|
window->DC.CursorPos = group_data.BackupCursorPos;
|
|
|
window->DC.CursorMaxPos = ImMax(group_data.BackupCursorMaxPos, window->DC.CursorMaxPos);
|
|
|
- window->DC.CurrentLineHeight = group_data.BackupCurrentLineHeight;
|
|
|
- window->DC.CurrentLineTextBaseOffset = group_data.BackupCurrentLineTextBaseOffset;
|
|
|
window->DC.IndentX = group_data.BackupIndentX;
|
|
|
window->DC.GroupOffsetX = group_data.BackupGroupOffsetX;
|
|
|
- window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f;
|
|
|
+ window->DC.CurrentLineHeight = group_data.BackupCurrentLineHeight;
|
|
|
+ window->DC.CurrentLineTextBaseOffset = group_data.BackupCurrentLineTextBaseOffset;
|
|
|
+ window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f; // To enforce Log carriage return
|
|
|
|
|
|
if (group_data.AdvanceCursor)
|
|
|
{
|