summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/kernel/qwhatsthis.cpp5
-rw-r--r--src/widgets/styles/qwindowsvistastyle.cpp18
2 files changed, 17 insertions, 6 deletions
diff --git a/src/widgets/kernel/qwhatsthis.cpp b/src/widgets/kernel/qwhatsthis.cpp
index 9d3493dc8a..5df69be020 100644
--- a/src/widgets/kernel/qwhatsthis.cpp
+++ b/src/widgets/kernel/qwhatsthis.cpp
@@ -47,6 +47,7 @@
#include "qdesktopwidget.h"
#include "qevent.h"
#include "qpixmap.h"
+#include "qscreen.h"
#include "qpainter.h"
#include "qtimer.h"
#include "qhash.h"
@@ -232,8 +233,8 @@ QWhatsThat::~QWhatsThat()
void QWhatsThat::showEvent(QShowEvent *)
{
- background = QPixmap::grabWindow(QApplication::desktop()->internalWinId(),
- x(), y(), width(), height());
+ background = QGuiApplication::primaryScreen()->grabWindow(QApplication::desktop()->internalWinId(),
+ x(), y(), width(), height());
}
void QWhatsThat::mousePressEvent(QMouseEvent* e)
diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp
index 86574f2587..138f5dbf17 100644
--- a/src/widgets/styles/qwindowsvistastyle.cpp
+++ b/src/widgets/styles/qwindowsvistastyle.cpp
@@ -41,6 +41,8 @@
#include "qwindowsvistastyle.h"
#include "qwindowsvistastyle_p.h"
+#include <qscreen.h>
+#include <qwindow.h>
#include <private/qstylehelper_p.h>
#include <private/qsystemlibrary_p.h>
#include <private/qapplication_p.h>
@@ -1655,10 +1657,18 @@ void QWindowsVistaStyle::drawComplexControl(ComplexControl control, const QStyle
t->setStartImage(startImage);
} else {
QPoint offset(0, 0);
- if (!widget->internalWinId())
- offset = widget->mapTo(widget->nativeParentWidget(), offset);
- t->setStartImage(QPixmap::grabWindow(widget->effectiveWinId(), offset.x(), offset.y(),
- option->rect.width(), option->rect.height()).toImage());
+ QWindow *window = widget->windowHandle();
+ if (!window) {
+ if (const QWidget *nativeParent = widget->nativeParentWidget()) {
+ offset = widget->mapTo(nativeParent, offset);
+ window = nativeParent->windowHandle();
+ }
+ }
+ if (window && window->handle()) {
+ const QPixmap pixmap = window->screen()->grabWindow(window->winId(),
+ offset.x(), offset.y(), option->rect.width(), option->rect.height());
+ t->setStartImage(pixmap.toImage());
+ }
}
} else {
startImage.fill(0);