client: Clamp fractional scaling to be >= 1.0

Whilst the fractional scaling protocol supports values less than 100%,
Qt does not.

In this case we should continue using 100% and let the compositor take
care of making it smaller.

Change-Id: Iaec32adc80aa37f441be37b39e3e0afcbf29136b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
This commit is contained in:
David Edmundson 2023-05-18 13:45:13 +03:00
parent 7238199c84
commit 5043973b14

View File

@ -105,16 +105,18 @@ void QWaylandWindow::initWindow()
if (mDisplay->fractionalScaleManager() && qApp->highDpiScaleFactorRoundingPolicy() == Qt::HighDpiScaleFactorRoundingPolicy::PassThrough) {
mFractionalScale.reset(new QWaylandFractionalScale(mDisplay->fractionalScaleManager()->get_fractional_scale(mSurface->object())));
if (mScale != mFractionalScale->preferredScale()) {
mScale = mFractionalScale->preferredScale();
qreal preferredScale = std::max(1.0, mFractionalScale->preferredScale());
if (mScale != preferredScale) {
mScale = preferredScale;
QWindowSystemInterface::handleWindowDevicePixelRatioChanged(window());
}
connect(mFractionalScale.data(), &QWaylandFractionalScale::preferredScaleChanged, this, [this]() {
if (mScale == mFractionalScale->preferredScale()) {
qreal preferredScale = std::max(1.0, mFractionalScale->preferredScale());
if (mScale == preferredScale) {
return;
}
mScale = mFractionalScale->preferredScale();
mScale = preferredScale;
QWindowSystemInterface::handleWindowDevicePixelRatioChanged(window());
ensureSize();
if (mViewport)