Qt: Round window sizes after applying DPI scaling

This commit is contained in:
TheLastRar 2025-11-02 21:56:01 +00:00 committed by lightningterror
parent cfea84b934
commit 908d35bf77
3 changed files with 4 additions and 17 deletions

View File

@ -50,16 +50,6 @@ QWidget* DisplaySurface::createWindowContainer(QWidget* parent)
return m_container;
}
int DisplaySurface::scaledWindowWidth() const
{
return std::max(static_cast<int>(std::ceil(static_cast<qreal>(width()) * devicePixelRatio())), 1);
}
int DisplaySurface::scaledWindowHeight() const
{
return std::max(static_cast<int>(std::ceil(static_cast<qreal>(height()) * devicePixelRatio())), 1);
}
std::optional<WindowInfo> DisplaySurface::getWindowInfo()
{
std::optional<WindowInfo> ret(QtUtils::GetWindowInfoForWindow(this));
@ -359,8 +349,8 @@ bool DisplaySurface::event(QEvent* event)
QWindow::event(event);
const float dpr = devicePixelRatio();
const u32 scaled_width = static_cast<u32>(std::max(static_cast<int>(std::ceil(static_cast<qreal>(width()) * dpr)), 1));
const u32 scaled_height = static_cast<u32>(std::max(static_cast<int>(std::ceil(static_cast<qreal>(height()) * dpr)), 1));
const u32 scaled_width = static_cast<u32>(std::max(static_cast<int>(std::round(static_cast<qreal>(width()) * dpr)), 1));
const u32 scaled_height = static_cast<u32>(std::max(static_cast<int>(std::round(static_cast<qreal>(height()) * dpr)), 1));
// avoid spamming resize events for paint events (sent on move on windows)
if (m_last_window_width != scaled_width || m_last_window_height != scaled_height || m_last_window_scale != dpr)

View File

@ -23,9 +23,6 @@ public:
// Thus, we always need a container widget.
QWidget* createWindowContainer(QWidget* parent = nullptr);
int scaledWindowWidth() const;
int scaledWindowHeight() const;
std::optional<WindowInfo> getWindowInfo();
void updateRelativeMode(bool enabled);

View File

@ -148,8 +148,8 @@ namespace QtUtils
else
dpr = window->devicePixelRatio();
wi.surface_width = static_cast<u32>(static_cast<qreal>(window->width()) * dpr);
wi.surface_height = static_cast<u32>(static_cast<qreal>(window->height()) * dpr);
wi.surface_width = static_cast<u32>(std::max(static_cast<int>(std::round(static_cast<qreal>(window->width()) * dpr)), 1));
wi.surface_height = static_cast<u32>(std::max(static_cast<int>(std::round(static_cast<qreal>(window->height()) * dpr)), 1));
wi.surface_scale = static_cast<float>(dpr);
// Query refresh rate, we need it for sync.