Widgets: No longer use deprecated QPixmap::grabWindow(),grabWidget().
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Mon, 30 Apr 2012 12:42:40 +0000 (14:42 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 1 May 2012 05:10:40 +0000 (07:10 +0200)
Change-Id: Icf0d6a672edcfd1d3d10275bb9a93bde29251e79
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/widgets/kernel/qwhatsthis.cpp
src/widgets/styles/qwindowsvistastyle.cpp

index 9d3493d..5df69be 100644 (file)
@@ -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)
index 86574f2..138f5db 100644 (file)
@@ -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);