diff options
-rw-r--r-- | src/client/qwaylandfractionalscale.cpp | 7 | ||||
-rw-r--r-- | src/client/qwaylandfractionalscale_p.h | 8 | ||||
-rw-r--r-- | src/client/qwaylandwindow.cpp | 10 |
3 files changed, 7 insertions, 18 deletions
diff --git a/src/client/qwaylandfractionalscale.cpp b/src/client/qwaylandfractionalscale.cpp index 324a0b729..34169670f 100644 --- a/src/client/qwaylandfractionalscale.cpp +++ b/src/client/qwaylandfractionalscale.cpp @@ -17,17 +17,12 @@ QWaylandFractionalScale::~QWaylandFractionalScale() destroy(); } -qreal QWaylandFractionalScale::preferredScale() const -{ - return mPreferredScale; -} - void QWaylandFractionalScale::wp_fractional_scale_v1_preferred_scale(uint scale) { qreal preferredScale = scale / 120.0; // hardcoded denominator determined in the spec if (preferredScale != mPreferredScale) { mPreferredScale = preferredScale; - Q_EMIT preferredScaleChanged(); + Q_EMIT preferredScaleChanged(preferredScale); } } diff --git a/src/client/qwaylandfractionalscale_p.h b/src/client/qwaylandfractionalscale_p.h index 0483eb338..c030e60dd 100644 --- a/src/client/qwaylandfractionalscale_p.h +++ b/src/client/qwaylandfractionalscale_p.h @@ -20,6 +20,8 @@ #include <QObject> +#include <optional> + QT_BEGIN_NAMESPACE namespace QtWaylandClient { @@ -31,16 +33,14 @@ public: explicit QWaylandFractionalScale(struct ::wp_fractional_scale_v1 *object); ~QWaylandFractionalScale(); - qreal preferredScale() const; - Q_SIGNALS: - void preferredScaleChanged(); + void preferredScaleChanged(qreal preferredScale); protected: void wp_fractional_scale_v1_preferred_scale(uint scale) override; private: - qreal mPreferredScale = 1.0; + std::optional<qreal> mPreferredScale; }; } diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index aea2cfff9..cbf1c2a81 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -105,14 +105,8 @@ void QWaylandWindow::initWindow() if (mDisplay->fractionalScaleManager() && qApp->highDpiScaleFactorRoundingPolicy() == Qt::HighDpiScaleFactorRoundingPolicy::PassThrough) { mFractionalScale.reset(new QWaylandFractionalScale(mDisplay->fractionalScaleManager()->get_fractional_scale(mSurface->object()))); - qreal preferredScale = std::max(1.0, mFractionalScale->preferredScale()); - if (mScale != preferredScale) { - mScale = preferredScale; - QWindowSystemInterface::handleWindowDevicePixelRatioChanged(window()); - } - - connect(mFractionalScale.data(), &QWaylandFractionalScale::preferredScaleChanged, this, [this]() { - qreal preferredScale = std::max(1.0, mFractionalScale->preferredScale()); + connect(mFractionalScale.data(), &QWaylandFractionalScale::preferredScaleChanged, this, [this](qreal preferredScale) { + preferredScale = std::max(1.0, preferredScale); if (mScale == preferredScale) { return; } |