summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qscreen.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-02-29 12:34:31 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-02-29 12:34:31 +0100
commita224dfc9d19757734bf49fcefdeaad5d855dfe98 (patch)
tree83b61bea7fa243557febe9652f3f16d265a2689a /src/gui/kernel/qscreen.cpp
parentbe84480785b9686dc09937fa33b685de7cc570f1 (diff)
parentf253f4c3310655933266f62e90f46fd12b5c49e4 (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: tests/auto/corelib/io/qprocess/tst_qprocess.cpp Change-Id: Ib6955eb874b516b185b45d6c38cec646fbaa95f4
Diffstat (limited to 'src/gui/kernel/qscreen.cpp')
-rw-r--r--src/gui/kernel/qscreen.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp
index 0e17b2d803..bc4a25a65f 100644
--- a/src/gui/kernel/qscreen.cpp
+++ b/src/gui/kernel/qscreen.cpp
@@ -46,6 +46,7 @@
#include <QtCore/QDebug>
#include <QtCore/private/qobject_p.h>
+#include "qhighdpiscaling_p.h"
QT_BEGIN_NAMESPACE
@@ -692,7 +693,19 @@ QPixmap QScreen::grabWindow(WId window, int x, int y, int width, int height)
qWarning("invoked with handle==0");
return QPixmap();
}
- return platformScreen->grabWindow(window, x, y, width, height);
+ const qreal factor = QHighDpiScaling::factor(this);
+ if (qFuzzyCompare(factor, 1))
+ return platformScreen->grabWindow(window, x, y, width, height);
+
+ const QPoint nativePos = QHighDpi::toNative(QPoint(x, y), factor);
+ QSize nativeSize(width, height);
+ if (nativeSize.isValid())
+ nativeSize = QHighDpi::toNative(nativeSize, factor);
+ QPixmap result =
+ platformScreen->grabWindow(window, nativePos.x(), nativePos.y(),
+ nativeSize.width(), nativeSize.height());
+ result.setDevicePixelRatio(factor);
+ return result;
}
#ifndef QT_NO_DEBUG_STREAM