summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/windows/qwindowsbackingstore.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowsbackingstore.h1
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 &region)
}
}
+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 &region)
{
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 &region, 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;