From f2ce2def097c6d3a0cec0fdcb83cc24bd28311c5 Mon Sep 17 00:00:00 2001 From: ocornut Date: Thu, 6 Aug 2026 21:45:19 +0200 Subject: [PATCH] Backends: OSX: fixed reporting backing scale as content scale (dpiscale). Was possibly harmless because DpiScale is only used by user or certain opt-in feature. But, Metal backend wrongly used viewport->DpiScale in ImGui_ImplMetal_SetWindowSize() so it might affect it cc #6828 --- backends/imgui_impl_osx.mm | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/backends/imgui_impl_osx.mm b/backends/imgui_impl_osx.mm index c60aa4c82..1e0f74ffd 100644 --- a/backends/imgui_impl_osx.mm +++ b/backends/imgui_impl_osx.mm @@ -1079,14 +1079,6 @@ static void ImGui_ImplOSX_SetWindowAlpha(ImGuiViewport* viewport, float alpha) vd->Window.alphaValue = alpha; } -static float ImGui_ImplOSX_GetWindowDpiScale(ImGuiViewport* viewport) -{ - ImGui_ImplOSX_ViewportData* vd = (ImGui_ImplOSX_ViewportData*)viewport->PlatformUserData; - IM_ASSERT(vd->Window != 0); - - return vd->Window.backingScaleFactor; -} - static void ImGui_ImplOSX_UpdateMonitors() { ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO(); @@ -1107,7 +1099,7 @@ static void ImGui_ImplOSX_UpdateMonitors() imgui_monitor.MainSize = ImVec2(frame.size.width, frame.size.height); imgui_monitor.WorkPos = ImVec2(visibleFrame.origin.x, visibleFrame.origin.y); imgui_monitor.WorkSize = ImVec2(visibleFrame.size.width, visibleFrame.size.height); - imgui_monitor.DpiScale = screen.backingScaleFactor; + imgui_monitor.DpiScale = 1.0f; imgui_monitor.PlatformHandle = (__bridge_retained void*)screen; platform_io.Monitors.push_back(imgui_monitor); @@ -1133,7 +1125,6 @@ static void ImGui_ImplOSX_InitMultiViewportSupport() platform_io.Platform_GetWindowMinimized = ImGui_ImplOSX_GetWindowMinimized; platform_io.Platform_SetWindowTitle = ImGui_ImplOSX_SetWindowTitle; platform_io.Platform_SetWindowAlpha = ImGui_ImplOSX_SetWindowAlpha; - platform_io.Platform_GetWindowDpiScale = ImGui_ImplOSX_GetWindowDpiScale; // FIXME-DPI // Register main window handle (which is owned by the main application, not by us) ImGuiViewport* main_viewport = ImGui::GetMainViewport();