@@ -14788,6 +14788,7 @@ void ImGui::LocalizeRegisterEntries(const ImGuiLocEntry* entries, int count)
14788
14788
//-----------------------------------------------------------------------------
14789
14789
// - GetMainViewport()
14790
14790
// - SetWindowViewport() [Internal]
14791
+ // - ScaleWindowsInViewport() [Internal]
14791
14792
// - UpdateViewportsNewFrame() [Internal]
14792
14793
// (this section is more complete in the 'docking' branch)
14793
14794
//-----------------------------------------------------------------------------
@@ -14803,6 +14804,24 @@ void ImGui::SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
14803
14804
window->Viewport = viewport;
14804
14805
}
14805
14806
14807
+ static void ScaleWindow(ImGuiWindow* window, float scale)
14808
+ {
14809
+ ImVec2 origin = window->Viewport->Pos;
14810
+ window->Pos = ImFloor((window->Pos - origin) * scale + origin);
14811
+ window->Size = ImTrunc(window->Size * scale);
14812
+ window->SizeFull = ImTrunc(window->SizeFull * scale);
14813
+ window->ContentSize = ImTrunc(window->ContentSize * scale);
14814
+ }
14815
+
14816
+ // Scale all windows (position, size). Use when e.g. changing DPI. (This is a lossy operation!)
14817
+ void ImGui::ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale)
14818
+ {
14819
+ ImGuiContext& g = *GImGui;
14820
+ for (ImGuiWindow* window : g.Windows)
14821
+ if (window->Viewport == viewport)
14822
+ ScaleWindow(window, scale);
14823
+ }
14824
+
14806
14825
// Update viewports and monitor infos
14807
14826
static void ImGui::UpdateViewportsNewFrame()
14808
14827
{
0 commit comments