summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@qt.io>2022-01-04 10:06:57 +0100
committerFawzi Mohamed <fawzi.mohamed@qt.io>2022-01-15 16:16:13 +0100
commitda6c8b2fc6bc1a29b8a88c4ecce53eaf811eb06c (patch)
tree4dd9d1b5b7fb7ea2818a2b734242d09ad3899b80 /src/widgets
parentcfca4188f9d294cca9be96ae98ba0ed311be21b7 (diff)
Fix Pick Screen Color with multiple monitors
QScreen::grabWindow expects screen coordinates, not global ones, use QScreen::geometry() to compute them. Fixes: QTBUG-99472 Pick-to: 6.2 6.3 Change-Id: Ic4b99577b8cb394e6cd0a2d3f554bb3ec8250afa Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Zhang Hao <zhanghao@uniontech.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/dialogs/qcolordialog.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp
index 9db8d5687c..8696797b64 100644
--- a/src/widgets/dialogs/qcolordialog.cpp
+++ b/src/widgets/dialogs/qcolordialog.cpp
@@ -1566,7 +1566,9 @@ QColor QColorDialogPrivate::grabScreenColor(const QPoint &p)
QScreen *screen = QGuiApplication::screenAt(p);
if (!screen)
screen = QGuiApplication::primaryScreen();
- const QPixmap pixmap = screen->grabWindow(0, p.x(), p.y(), 1, 1);
+ const QRect screenRect = screen->geometry();
+ const QPixmap pixmap =
+ screen->grabWindow(0, p.x() - screenRect.x(), p.y() - screenRect.y(), 1, 1);
const QImage i = pixmap.toImage();
return i.pixel(0, 0);
}