summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
authorAaron McCarthy <aaron.mccarthy@nokia.com>2010-02-17 03:20:09 (GMT)
committerAaron McCarthy <aaron.mccarthy@nokia.com>2010-02-17 03:20:09 (GMT)
commit4cd7e2ebd675fdc0b00d9a29f64e4189e74f7656 (patch)
tree9db3085e15487c4b0580035eeb0b262b0ada5920 /src/gui/painting
parentd1d81d48dff6b3285d9016d8f3354630926463d8 (diff)
parentfd3f9dd0f31efeea3aa0ec28b54c70d85712c7ba (diff)
downloadQt-4cd7e2ebd675fdc0b00d9a29f64e4189e74f7656.zip
Qt-4cd7e2ebd675fdc0b00d9a29f64e4189e74f7656.tar.gz
Qt-4cd7e2ebd675fdc0b00d9a29f64e4189e74f7656.tar.bz2
Merge remote branch 'origin/master' into bearermanagement/unit-tests
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index 6cbf3d9..028ec48 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -149,11 +149,19 @@ void QS60WindowSurface::flush(QWidget *widget, const QRegion &region, const QPoi
Q_ASSERT(window);
QTLWExtra *topExtra = window->d_func()->maybeTopData();
Q_ASSERT(topExtra);
+ QRect qr = region.boundingRect();
if (!topExtra->inExpose) {
topExtra->inExpose = true; // Prevent DrawNow() from calling syncBackingStore() again
- TRect tr = qt_QRect2TRect(region.boundingRect());
+ TRect tr = qt_QRect2TRect(qr);
widget->winId()->DrawNow(tr);
topExtra->inExpose = false;
+ } else {
+ // This handles the case when syncBackingStore updates content outside of the
+ // original drawing rectangle. This might happen if there are pending update()
+ // events at the same time as we get a Draw() from Symbian.
+ QRect drawRect = qt_TRect2QRect(widget->winId()->DrawableWindow()->GetDrawRect());
+ if (!drawRect.contains(qr))
+ widget->winId()->DrawDeferred();
}
}