diff --git a/imgui.cpp b/imgui.cpp index 51458be6..aad15c1f 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -4550,6 +4550,11 @@ ImVec2 ImGui::GetContentRegionAvail() return GetContentRegionMax() - (window->DC.CursorPos - window->Pos); } +float ImGui::GetContentRegionAvailWidth() +{ + return GetContentRegionAvail().x; +} + // In window space (not screen space!) ImVec2 ImGui::GetWindowContentRegionMin() { diff --git a/imgui.h b/imgui.h index 3017d082..8a6fc016 100644 --- a/imgui.h +++ b/imgui.h @@ -124,6 +124,7 @@ namespace ImGui IMGUI_API ImVec2 GetContentRegionAvail(); // == GetContentRegionMax() - GetCursorPos() IMGUI_API ImVec2 GetWindowContentRegionMin(); // window boundaries, in windows coordinates IMGUI_API ImVec2 GetWindowContentRegionMax(); + IMGUI_API float GetContentRegionAvailWidth(); // IMGUI_API ImDrawList* GetWindowDrawList(); // get rendering command-list if you want to append your own draw primitives IMGUI_API ImFont* GetWindowFont(); IMGUI_API float GetWindowFontSize(); // size (also height in pixels) of current font with current scale applied diff --git a/imgui_demo.cpp b/imgui_demo.cpp index d8a54bff..b20af8ec 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -735,21 +735,26 @@ void ImGui::ShowTestWindow(bool* opened) if (ImGui::TreeNode("Widgets Alignment")) { static float f = 0.0f; - ImGui::Text("Fixed: 100 pixels"); + ImGui::Text("PushItemWidth(100)"); ImGui::PushItemWidth(100); ImGui::InputFloat("float##1", &f); ImGui::PopItemWidth(); - ImGui::Text("Proportional: 50%% of window width"); + ImGui::Text("PushItemWidth(GetWindowWidth() * 0.5f);"); ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.5f); ImGui::InputFloat("float##2", &f); ImGui::PopItemWidth(); - ImGui::Text("Right-aligned: Leave 100 pixels for label"); - ImGui::PushItemWidth(-100); + ImGui::Text("PushItemWidth(GetContentRegionAvailWidth() * 0.5f);"); + ImGui::PushItemWidth(ImGui::GetContentRegionAvailWidth() * 0.5f); ImGui::InputFloat("float##3", &f); ImGui::PopItemWidth(); + ImGui::Text("PushItemWidth(-100);"); + ImGui::PushItemWidth(-100); + ImGui::InputFloat("float##4", &f); + ImGui::PopItemWidth(); + ImGui::TreePop(); } @@ -1205,7 +1210,7 @@ void ImGui::ShowTestWindow(bool* opened) ImGui::Separator(); ImGui::Spacing(); - // Word-wrapping + // Word wrapping ImGui::Text("Word-wrapping:"); ImGui::Columns(2, "word-wrapping"); ImGui::Separator();