summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Edmundson <davidedmundson@kde.org>2023-02-13 22:59:52 +0000
committerDavid Edmundson <davidedmundson@kde.org>2023-02-27 10:36:08 +0000
commit34e3f7ecde67263c380938d2f4f690f9b41afb87 (patch)
tree91ceed5dd49624a89fd09ddb790253bd9abdd182 /src
parent9858708993906f7a449c127b6c1f24ccae7ed453 (diff)
downloadqtwayland-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')
-rw-r--r--src/client/qwaylandwindow.cpp8
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();