summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qpaintdevicewindow.cpp
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2024-01-25 14:58:39 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2024-02-01 19:25:42 +0000
commit6cb497c1570ee427460962b2c0abe3b6dd8c4ae6 (patch)
tree323e585808a3d411dfa63e30f48e64ff4b1636a3 /src/gui/kernel/qpaintdevicewindow.cpp
parentd44629d677ed2aae6d32ab10cb69cfdffa385639 (diff)
Don't rely on QRasterWindow::resizeEvent for marking window dirty
The de-virtualization gotcha might result in client code not calling QRasterWindow::resizeEvent, which we use for dirty state management after e0eb2818face4ffb7dafd87464f355d4654b7be0. In practice this wasn't an issue, because QPaintDeviceWindow handles paint events by calling markWindowAsDirty first, but we should not rely on this. Instead plumb the resize event to QPaintDeviceWindowPrivate, which QRasterWindow implements and can override the behavior of. Pick-to: 6.5 6.6 6.7 Change-Id: I5c0747da10f0275b77f56be32690d796fa48cdb4 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/gui/kernel/qpaintdevicewindow.cpp')
-rw-r--r--src/gui/kernel/qpaintdevicewindow.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gui/kernel/qpaintdevicewindow.cpp b/src/gui/kernel/qpaintdevicewindow.cpp
index bc7ac89b03..9e8c6ae5a8 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);