Qt: Fix incorrect fractional window size in MacOS

This commit is contained in:
Stenzek
2026-01-17 19:11:26 +10:00
parent ebb604e1c6
commit 171514327d

View File

@@ -173,16 +173,21 @@ void QtUtils::UpdateSurfaceSize(QWidget* widget, WindowInfo* wi)
if (std::optional<std::pair<int, int>> size =
CocoaTools::GetViewSizeInPixels(reinterpret_cast<void*>(widget->winId())))
{
qreal device_pixel_ratio = widget->devicePixelRatio();
wi->surface_width = static_cast<u16>(size->first);
wi->surface_height = static_cast<u16>(size->second);
wi->surface_scale = static_cast<float>(widget->devicePixelRatio());
if (Core::GetBaseBoolSettingValue("Main", "UseFractionalWindowScale", true))
{
if (const std::optional<double> real_device_pixel_ratio = CocoaTools::GetViewRealScalingFactor(wi->window_handle))
device_pixel_ratio = static_cast<qreal>(real_device_pixel_ratio.value());
{
const QSize scaled_size =
ApplyDevicePixelRatioToSize(widget->size(), static_cast<qreal>(real_device_pixel_ratio.value()));
wi->surface_width = static_cast<u16>(scaled_size.width());
wi->surface_height = static_cast<u16>(scaled_size.height());
wi->surface_scale = static_cast<float>(real_device_pixel_ratio.value());
}
}
wi->surface_width = static_cast<u16>(size->first);
wi->surface_height = static_cast<u16>(size->second);
wi->surface_scale = static_cast<float>(device_pixel_ratio);
return;
}
#endif