From 035c87ef847e5b6188713a6009f383f633b6043d Mon Sep 17 00:00:00 2001 From: ocornut Date: Wed, 5 Aug 2026 17:20:04 +0200 Subject: [PATCH] Viewports: fixed viewport->FramebufferScale update for main viewport. Amend 98a66d8, 91b131e. (#9502) --- imgui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index 43d8471b1..7d92e6a0e 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -17429,10 +17429,10 @@ ImGuiViewportP* ImGui::AddUpdateViewport(ImGuiWindow* window, ImGuiID id, const viewport->UpdateWorkRect(); IM_ASSERT(window == NULL || viewport->ID == window->ID); - // Initialize FramebufferScale for new viewports, before UpdatePlatformWindows() -> Platform_GetWindowFramebufferScale() has a chance to run. + // Initialize FramebufferScale for main viewport and new viewports, before UpdatePlatformWindows() -> Platform_GetWindowFramebufferScale() has a chance to run. // FIXME: New viewport on monitors with a different scale will run for a frame with wrong scale? (#9502) // A workaround could be to cache last known FramebufferScale per monitor, so the heuristic can pull it from monitor. - if (viewport->FramebufferScale.x <= 0.0f || viewport->FramebufferScale.y <= 0.0f) + if (viewport->FramebufferScale.x <= 0.0f || viewport->FramebufferScale.y <= 0.0f || viewport->ID == IMGUI_VIEWPORT_DEFAULT_ID) viewport->FramebufferScale = g.IO.DisplayFramebufferScale; if (window != NULL)