diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/kernel/qwhatsthis.cpp | 5 | ||||
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 18 |
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); |