22634e0079
In paintAndFlush, QWidgetRepaintManager subtracts opaque children if the target isn't overlapped and isMoved is set to true. So in moveRect, set isMoved to true after the blitting of movable areas, and reset it to false if we have overlapped sibling or child regions. Otherwise, moving so far that sourceRect is invalid (none of the original pixels are visible after the move) we end up in a code path that sets isMoved to true even with overlapping children or siblings, which then breaks paintAndFlush's assumptions. Reuse the test case written by Sergiy Korobov <tiamatenko@gmail.com> in earlier attempts to fix this bug. Fixes: QTBUG-26269 Pick-to: 6.2 Change-Id: If7443863f5eee79a80220cd587522122f42a21e4 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> |
||
---|---|---|
.. | ||
qaction | ||
qactiongroup | ||
qapplication | ||
qboxlayout | ||
qformlayout | ||
qgesturerecognizer | ||
qgridlayout | ||
qlayout | ||
qshortcut | ||
qsizepolicy | ||
qstackedlayout | ||
qtooltip | ||
qwidget | ||
qwidget_window | ||
qwidgetaction | ||
qwidgetmetatype | ||
qwidgetrepaintmanager | ||
qwidgetsvariant | ||
qwindowcontainer | ||
CMakeLists.txt |