diff options
author | David Edmundson <davidedmundson@kde.org> | 2023-02-13 22:59:52 +0000 |
---|---|---|
committer | David Edmundson <davidedmundson@kde.org> | 2023-02-27 10:36:08 +0000 |
commit | 34e3f7ecde67263c380938d2f4f690f9b41afb87 (patch) | |
tree | 91ceed5dd49624a89fd09ddb790253bd9abdd182 /src/client | |
parent | 9858708993906f7a449c127b6c1f24ccae7ed453 (diff) | |
download | qtwayland-34e3f7ecde67263c380938d2f4f690f9b41afb87.tar.gz |
client: Utilize new handleWindowDevicePixelRatioChanged
Rather than assuming window scale should match the screen scale use an
explicit notification system.
This fixes issues caused by drift between the two:
Task-number: QTBUG-101656
Task-number: QTBUG-93380
Change-Id: I9edb5fd95b8ceeca8073db1f56d81a31bbc9c549
Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/qwaylandwindow.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index 954d6df3..6aa2c6ab 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -104,12 +104,17 @@ void QWaylandWindow::initWindow() if (mDisplay->fractionalScaleManager() && qApp->highDpiScaleFactorRoundingPolicy() == Qt::HighDpiScaleFactorRoundingPolicy::PassThrough) { mFractionalScale.reset(new QWaylandFractionalScale(mDisplay->fractionalScaleManager()->get_fractional_scale(mSurface->object()))); - mScale = mFractionalScale->preferredScale(); + if (mScale != mFractionalScale->preferredScale()) { + mScale = mFractionalScale->preferredScale(); + QWindowSystemInterface::handleWindowDevicePixelRatioChanged(window()); + } + connect(mFractionalScale.data(), &QWaylandFractionalScale::preferredScaleChanged, this, [this]() { if (mScale == mFractionalScale->preferredScale()) { return; } mScale = mFractionalScale->preferredScale(); + QWindowSystemInterface::handleWindowDevicePixelRatioChanged(window()); ensureSize(); if (mViewport) updateViewport(); @@ -1326,6 +1331,7 @@ void QWaylandWindow::handleScreensChanged() if (scale != mScale) { mScale = scale; + QWindowSystemInterface::handleWindowDevicePixelRatioChanged(window()); if (mSurface) { if (mViewport) updateViewport(); |