diff -r dee5afe5301f -r 3f74d0d4af4c src/gui/painting/qbackingstore.cpp --- a/src/gui/painting/qbackingstore.cpp Mon Mar 15 12:43:09 2010 +0200 +++ b/src/gui/painting/qbackingstore.cpp Thu Apr 08 14:19:33 2010 +0300 @@ -352,6 +352,10 @@ // Always flush repainted areas. dirtyOnScreen += toClean; +#ifdef Q_WS_QWS + toClean.translate(tlwOffset); +#endif + #ifdef QT_NO_PAINT_DEBUG windowSurface->beginPaint(toClean); #else @@ -766,7 +770,12 @@ if (decorationRegion.isEmpty()) return; - windowSurface->beginPaint(decorationRegion); + //### The QWS decorations do not always paint the pixels they promise to paint. + // This causes painting problems with QWSMemorySurface. Since none of the other + // window surfaces actually use the region, passing an empty region is a safe + // workaround. + + windowSurface->beginPaint(QRegion()); QPaintEngine *engine = windowSurface->paintDevice()->paintEngine(); Q_ASSERT(engine);