diff --git a/src/gui/kernel/qpaintdevicewindow.cpp b/src/gui/kernel/qpaintdevicewindow.cpp index bc7ac89b035..9e8c6ae5a85 100644 --- a/src/gui/kernel/qpaintdevicewindow.cpp +++ b/src/gui/kernel/qpaintdevicewindow.cpp @@ -171,6 +171,8 @@ bool QPaintDeviceWindow::event(QEvent *event) auto region = QRect(QPoint(0, 0), size()); d->doFlush(region); // Will end up calling paintEvent return true; + } else if (event->type() == QEvent::Resize) { + d->handleResizeEvent(); } return QWindow::event(event); diff --git a/src/gui/kernel/qpaintdevicewindow_p.h b/src/gui/kernel/qpaintdevicewindow_p.h index 2fdac02e0ab..85c11cbf916 100644 --- a/src/gui/kernel/qpaintdevicewindow_p.h +++ b/src/gui/kernel/qpaintdevicewindow_p.h @@ -31,6 +31,8 @@ public: QPaintDeviceWindowPrivate(); ~QPaintDeviceWindowPrivate() override; + virtual void handleResizeEvent() {} + virtual void beginPaint(const QRegion ®ion) { Q_UNUSED(region); diff --git a/src/gui/kernel/qrasterwindow.cpp b/src/gui/kernel/qrasterwindow.cpp index 7888db67777..f292344ca1f 100644 --- a/src/gui/kernel/qrasterwindow.cpp +++ b/src/gui/kernel/qrasterwindow.cpp @@ -34,6 +34,13 @@ class QRasterWindowPrivate : public QPaintDeviceWindowPrivate { Q_DECLARE_PUBLIC(QRasterWindow) public: + void handleResizeEvent() override + { + Q_Q(QRasterWindow); + if (backingstore->size() != q->size()) + markWindowAsDirty(); + } + void beginPaint(const QRegion ®ion) override { Q_Q(QRasterWindow); @@ -103,9 +110,6 @@ QPaintDevice *QRasterWindow::redirected(QPoint *) const void QRasterWindow::resizeEvent(QResizeEvent *) { - Q_D(QRasterWindow); - if (d->backingstore->size() != size()) - d->markWindowAsDirty(); } QT_END_NAMESPACE