Windows QPA: Set SWP_NOCOPYBITS during resize to avoid jitter
Allowing Windows to re-use parts of the client area when resizing might result in jitter. See discussion in: https://stackoverflow.com/questions/53000291/how-to-smooth-ugly-jitter-flicker-jumping-when-resizing-windows-especially-drag Fixes: QTBUG-97774 Pick-to: 6.2 Change-Id: Idc8f0d1953dd0a8b329312d8a9fd0509cc24d81f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>bb10
parent
1d983f2902
commit
000f1ee360
|
|
@ -2481,6 +2481,11 @@ void QWindowsWindow::propagateSizeHints()
|
|||
bool QWindowsWindow::handleGeometryChangingMessage(MSG *message, const QWindow *qWindow, const QMargins &margins)
|
||||
{
|
||||
auto *windowPos = reinterpret_cast<WINDOWPOS *>(message->lParam);
|
||||
|
||||
// Tell Windows to discard the entire contents of the client area, as re-using
|
||||
// parts of the client area would lead to jitter during resize.
|
||||
windowPos->flags |= SWP_NOCOPYBITS;
|
||||
|
||||
if ((windowPos->flags & SWP_NOZORDER) == 0) {
|
||||
if (QWindowsWindow *platformWindow = QWindowsWindow::windowsWindowOf(qWindow)) {
|
||||
QWindow *parentWindow = qWindow->parent();
|
||||
|
|
@ -2493,7 +2498,7 @@ bool QWindowsWindow::handleGeometryChangingMessage(MSG *message, const QWindow *
|
|||
}
|
||||
if (!qWindow->isTopLevel()) // Implement hasHeightForWidth().
|
||||
return false;
|
||||
if ((windowPos->flags & (SWP_NOCOPYBITS | SWP_NOSIZE)))
|
||||
if (windowPos->flags & SWP_NOSIZE)
|
||||
return false;
|
||||
const QRect suggestedFrameGeometry(windowPos->x, windowPos->y,
|
||||
windowPos->cx, windowPos->cy);
|
||||
|
|
|
|||
Loading…
Reference in New Issue