diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2012-05-18 16:08:20 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-21 16:02:06 +0200 |
commit | 061968d0825b2f12dd99ec94ef03b87955af894a (patch) | |
tree | eca74631129cb8720b2c3518ba77efd54fcdd2de /src | |
parent | 09c90c9fc3f30a4ef5166afa6c5c81aab7ac278e (diff) |
QWindowsBackingStore: Implement scroll.
Similar to XCB.
Task-number: QTBUG-24299
Task-number: QTBUG-24296 (partially fixed)
Change-Id: I4c9d813d9645f957f2caad0c4e395ce0d3d222cc
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsbackingstore.cpp | 14 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsbackingstore.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.cpp b/src/plugins/platforms/windows/qwindowsbackingstore.cpp index e86b41a48a..aad115a30b 100644 --- a/src/plugins/platforms/windows/qwindowsbackingstore.cpp +++ b/src/plugins/platforms/windows/qwindowsbackingstore.cpp @@ -121,6 +121,20 @@ void QWindowsBackingStore::resize(const QSize &size, const QRegion ®ion) } } +Q_GUI_EXPORT void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset); + +bool QWindowsBackingStore::scroll(const QRegion &area, int dx, int dy) +{ + if (m_image.isNull() || m_image->image().isNull()) + return false; + + const QVector<QRect> rects = area.rects(); + for (int i = 0; i < rects.size(); ++i) + qt_scrollRectInImage(m_image->image(), rects.at(i), QPoint(dx, dy)); + + return true; +} + void QWindowsBackingStore::beginPaint(const QRegion ®ion) { Q_UNUSED(region); diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.h b/src/plugins/platforms/windows/qwindowsbackingstore.h index 75b6e5f736..f9a0603642 100644 --- a/src/plugins/platforms/windows/qwindowsbackingstore.h +++ b/src/plugins/platforms/windows/qwindowsbackingstore.h @@ -62,6 +62,7 @@ public: virtual QPaintDevice *paintDevice(); virtual void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); virtual void resize(const QSize &size, const QRegion &r); + virtual bool scroll(const QRegion &area, int dx, int dy); virtual void beginPaint(const QRegion &); HDC getDC() const; |