mirror of
https://github.com/ocornut/imgui.git
synced 2026-01-11 00:04:24 +00:00
Demo: changed default framed item width to use Min(GetFontSize() * 12, GetContentRegionAvail().x * 0.40f).
This commit is contained in:
parent
e877f78b0e
commit
9485aeb5c8
3 changed files with 30 additions and 9 deletions
|
|
@ -131,6 +131,7 @@ Other changes:
|
||||||
of WantVisible. This is set in the same structure because activating text input generally
|
of WantVisible. This is set in the same structure because activating text input generally
|
||||||
requires providing a window to the backend. (#8584, #6341)
|
requires providing a window to the backend. (#8584, #6341)
|
||||||
- Misc: added extra operators to ImVec4 in IMGUI_DEFINE_MATH_OPERATORS block. (#8510) [@gan74]
|
- Misc: added extra operators to ImVec4 in IMGUI_DEFINE_MATH_OPERATORS block. (#8510) [@gan74]
|
||||||
|
- Demo: changed default framed item width to use Min(GetFontSize() * 12, GetContentRegionAvail().x * 0.40f).
|
||||||
- Backends: Win32: Fixed an issue where externally losing mouse capture (due to e.g. focus loss)
|
- Backends: Win32: Fixed an issue where externally losing mouse capture (due to e.g. focus loss)
|
||||||
would fail to claim it again the next subsequent click. (#8594)
|
would fail to claim it again the next subsequent click. (#8594)
|
||||||
- Backends: SDL2, SDL3, OSX: Fill gamepad inputs and set ImGuiBackendFlags_HasGamepad
|
- Backends: SDL2, SDL3, OSX: Fill gamepad inputs and set ImGuiBackendFlags_HasGamepad
|
||||||
|
|
|
||||||
11
imgui.cpp
11
imgui.cpp
|
|
@ -7563,12 +7563,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
||||||
window->InnerClipRect.Max.y = ImFloor(window->InnerRect.Max.y - window->WindowBorderSize * 0.5f);
|
window->InnerClipRect.Max.y = ImFloor(window->InnerRect.Max.y - window->WindowBorderSize * 0.5f);
|
||||||
window->InnerClipRect.ClipWithFull(host_rect);
|
window->InnerClipRect.ClipWithFull(host_rect);
|
||||||
|
|
||||||
// Default item width. Make it proportional to window size if window manually resizes
|
|
||||||
if (window->Size.x > 0.0f && !(flags & ImGuiWindowFlags_Tooltip) && !(flags & ImGuiWindowFlags_AlwaysAutoResize))
|
|
||||||
window->ItemWidthDefault = ImTrunc(window->Size.x * 0.65f);
|
|
||||||
else
|
|
||||||
window->ItemWidthDefault = ImTrunc(g.FontSize * 16.0f);
|
|
||||||
|
|
||||||
// SCROLLING
|
// SCROLLING
|
||||||
|
|
||||||
// Lock down maximum scrolling
|
// Lock down maximum scrolling
|
||||||
|
|
@ -7681,6 +7675,11 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
||||||
window->DC.LayoutType = ImGuiLayoutType_Vertical;
|
window->DC.LayoutType = ImGuiLayoutType_Vertical;
|
||||||
window->DC.ParentLayoutType = parent_window ? parent_window->DC.LayoutType : ImGuiLayoutType_Vertical;
|
window->DC.ParentLayoutType = parent_window ? parent_window->DC.LayoutType : ImGuiLayoutType_Vertical;
|
||||||
|
|
||||||
|
// Default item width. Make it proportional to window size if window manually resizes
|
||||||
|
if (window->Size.x > 0.0f && !(flags & ImGuiWindowFlags_Tooltip) && !(flags & ImGuiWindowFlags_AlwaysAutoResize))
|
||||||
|
window->ItemWidthDefault = ImTrunc(window->Size.x * 0.65f);
|
||||||
|
else
|
||||||
|
window->ItemWidthDefault = ImTrunc(g.FontSize * 16.0f);
|
||||||
window->DC.ItemWidth = window->ItemWidthDefault;
|
window->DC.ItemWidth = window->ItemWidthDefault;
|
||||||
window->DC.TextWrapPos = -1.0f; // disabled
|
window->DC.TextWrapPos = -1.0f; // disabled
|
||||||
window->DC.ItemWidthStack.resize(0);
|
window->DC.ItemWidthStack.resize(0);
|
||||||
|
|
|
||||||
|
|
@ -410,9 +410,19 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Most "big" widgets share a common width settings by default. See 'Demo->Layout->Widgets Width' for details.
|
// Most framed widgets share a common width settings. Remaining width is used for the label.
|
||||||
ImGui::PushItemWidth(ImGui::GetFontSize() * -12); // e.g. Leave a fixed amount of width for labels (by passing a negative value), the rest goes to widgets.
|
// The width of the frame may be changed with PushItemWidth() or SetNextItemWidth().
|
||||||
//ImGui::PushItemWidth(-ImGui::GetWindowWidth() * 0.35f); // e.g. Use 2/3 of the space for widgets and 1/3 for labels (right align)
|
// - Positive value for absolute size, negative value for right-alignment.
|
||||||
|
// - The default value is about GetWindowWidth() * 0.65f.
|
||||||
|
// - See 'Demo->Layout->Widgets Width' for details.
|
||||||
|
// Here we change the frame width based on how much width we want to give to the label.
|
||||||
|
const float label_width_base = ImGui::GetFontSize() * 12; // Some amount of width for label, based on font size.
|
||||||
|
const float label_width_max = ImGui::GetContentRegionAvail().x * 0.40f; // ...but always leave some room for framed widgets.
|
||||||
|
const float label_width = IM_MIN(label_width_base, label_width_max);
|
||||||
|
ImGui::PushItemWidth(-label_width); // Right-align: framed items will leave 'label_width' available for the label.
|
||||||
|
//ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x * 0.40f); // e.g. Use 40% width for framed widgets, leaving 60% width for labels.
|
||||||
|
//ImGui::PushItemWidth(-ImGui::GetContentRegionAvail().x * 0.40f); // e.g. Use 40% width for labels, leaving 60% width for framed widgets.
|
||||||
|
//ImGui::PushItemWidth(ImGui::GetFontSize() * -12); // e.g. Use XXX width for labels, leaving the rest for framed widgets.
|
||||||
|
|
||||||
// Menu Bar
|
// Menu Bar
|
||||||
DemoWindowMenuBar(&demo_data);
|
DemoWindowMenuBar(&demo_data);
|
||||||
|
|
@ -4426,6 +4436,17 @@ static void DemoWindowLayout()
|
||||||
}
|
}
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
|
|
||||||
|
ImGui::Text("SetNextItemWidth/PushItemWidth(-Min(GetContentRegionAvail().x * 0.40f, GetFontSize() * 12))");
|
||||||
|
ImGui::PushItemWidth(-IM_MIN(ImGui::GetFontSize() * 12, ImGui::GetContentRegionAvail().x * 0.40f));
|
||||||
|
ImGui::DragFloat("float##4a", &f);
|
||||||
|
if (show_indented_items)
|
||||||
|
{
|
||||||
|
ImGui::Indent();
|
||||||
|
ImGui::DragFloat("float (indented)##4b", &f);
|
||||||
|
ImGui::Unindent();
|
||||||
|
}
|
||||||
|
ImGui::PopItemWidth();
|
||||||
|
|
||||||
// Demonstrate using PushItemWidth to surround three items.
|
// Demonstrate using PushItemWidth to surround three items.
|
||||||
// Calling SetNextItemWidth() before each of them would have the same effect.
|
// Calling SetNextItemWidth() before each of them would have the same effect.
|
||||||
ImGui::Text("SetNextItemWidth/PushItemWidth(-FLT_MIN)");
|
ImGui::Text("SetNextItemWidth/PushItemWidth(-FLT_MIN)");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue