diff options
author | Aaron McCarthy <aaron.mccarthy@nokia.com> | 2010-02-17 03:20:09 (GMT) |
---|---|---|
committer | Aaron McCarthy <aaron.mccarthy@nokia.com> | 2010-02-17 03:20:09 (GMT) |
commit | 4cd7e2ebd675fdc0b00d9a29f64e4189e74f7656 (patch) | |
tree | 9db3085e15487c4b0580035eeb0b262b0ada5920 /src/gui/painting | |
parent | d1d81d48dff6b3285d9016d8f3354630926463d8 (diff) | |
parent | fd3f9dd0f31efeea3aa0ec28b54c70d85712c7ba (diff) | |
download | Qt-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.cpp | 10 |
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 ®ion, 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(); } } |