summaryrefslogtreecommitdiffstats
path: root/src/gui/image
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2011-07-29 13:47:23 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-08-01 09:51:38 +0200
commitcfc94db49fbcb1913a546784536c742b353b9391 (patch)
tree95f4b3f0a4c26a9efc661bdba18e84fbf07f7397 /src/gui/image
parent2ac8eda5618aa98abce9b286494c1c631b5ad06a (diff)
Bring back QPixmap::grabWidget() (with a warning).
Change-Id: I8bbf07da474bc3ab35980b25c41c2fc4c02e8896 Reviewed-on: http://codereview.qt.nokia.com/2394 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/gui/image')
-rw-r--r--src/gui/image/qpixmap.cpp37
-rw-r--r--src/gui/image/qpixmap.h4
2 files changed, 10 insertions, 31 deletions
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index af27baea0e..d02da27f4e 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1029,39 +1029,18 @@ static void sendResizeEvents(QWidget *target)
\sa grabWindow()
*/
-QPixmap QPixmap::grabWidget(QPaintDevice *, const QRect &)
+QPixmap QPixmap::grabWidget(QObject *widget, const QRect &rectangle)
{
+ QPixmap pixmap;
// ### Qt5: should we keep or remove this method?
// SC solution would be to install a callback form QtWidgets, but ugly.
- qWarning() << "QPixmap::grabWidget is deprecated, use QWidget::render() instead";
- return QPixmap();
-#if 0
+ qWarning("QPixmap::grabWidget is deprecated, use QWidget::grab() instead");
if (!widget)
- return QPixmap();
-
- if (widget->testAttribute(Qt::WA_PendingResizeEvent) || !widget->testAttribute(Qt::WA_WState_Created))
- sendResizeEvents(widget);
-
- widget->d_func()->prepareToRender(QRegion(),
- QWidget::DrawWindowBackground | QWidget::DrawChildren | QWidget::IgnoreMask);
-
- QRect r(rect);
- if (r.width() < 0)
- r.setWidth(widget->width() - rect.x());
- if (r.height() < 0)
- r.setHeight(widget->height() - rect.y());
-
- if (!r.intersects(widget->rect()))
- return QPixmap();
-
- QPixmap res(r.size());
- if (!qt_widget_private(widget)->isOpaque)
- res.fill(Qt::transparent);
-
- widget->d_func()->render(&res, QPoint(), r, QWidget::DrawWindowBackground
- | QWidget::DrawChildren | QWidget::IgnoreMask, true);
- return res;
-#endif
+ return pixmap;
+ QMetaObject::invokeMethod(widget, "grab", Qt::DirectConnection,
+ Q_RETURN_ARG(QPixmap, pixmap),
+ Q_ARG(QRect, rectangle));
+ return pixmap;
}
/*!
diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h
index 66f1eda877..402708b48c 100644
--- a/src/gui/image/qpixmap.h
+++ b/src/gui/image/qpixmap.h
@@ -113,8 +113,8 @@ public:
QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const;
static QPixmap grabWindow(WId, int x=0, int y=0, int w=-1, int h=-1);
- static QPixmap grabWidget(QPaintDevice *widget, const QRect &rect);
- static inline QPixmap grabWidget(QPaintDevice *widget, int x=0, int y=0, int w=-1, int h=-1)
+ static QPixmap grabWidget(QObject *widget, const QRect &rect);
+ static inline QPixmap grabWidget(QObject *widget, int x=0, int y=0, int w=-1, int h=-1)
{ return grabWidget(widget, QRect(x, y, w, h)); }
inline QPixmap scaled(int w, int h, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,