919f514f29
The QPlatformBackingStore::scroll() API takes a QRegion as input, and we kept this data type in the implementation of QCALayerBackingStore::scroll for the logic of figuring out whether we could use the existing back buffer as source of the scroll or if we needed to pull data from the front buffer. We then iterated the rects of the resulting in-line region, and called qt_scrollRectInImage for each of them. This will unfortunately not work whenever the scroll of one of these rects ends up overwriting parts of the back buffer that later rects of the region use as their source rect. This could be reproduced by moving the cursor within a text document, which would dirty a small area around the cursor, making the subsequent scroll of the viewport result in garbled text. This issue exists in the other platform backingstore implementations too, but since the QWidgetRepaintManager never calls scroll() with anything but a single rect they would not have any issues. The problem could potentially be solved by sorting the rects before blitting them, but now this quick fix solves the regression on macOS. Fixes: QTBUG-102181 Pick-to: 6.2 6.3 6.3.0 Change-Id: I80f6d26117321e3c09e068cdb03eb320e244a5de Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> |
||
---|---|---|
.github/workflows | ||
bin | ||
cmake | ||
coin | ||
config.tests | ||
dist | ||
doc | ||
examples | ||
lib | ||
libexec | ||
mkspecs | ||
qmake | ||
src | ||
tests | ||
util | ||
.cmake.conf | ||
.gitattributes | ||
.gitignore | ||
.lgtm.yml | ||
.tag | ||
CMakeLists.txt | ||
conanfile.py | ||
config_help.txt | ||
configure | ||
configure.bat | ||
configure.cmake | ||
dependencies.yaml | ||
LICENSE.FDL | ||
LICENSE.GPL2 | ||
LICENSE.GPL3 | ||
LICENSE.GPL3-EXCEPT | ||
LICENSE.LGPL3 | ||
LICENSE.QT-LICENSE-AGREEMENT | ||
qt_cmdline.cmake | ||
sync.profile |