summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidgetwindow.cpp
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@digia.com>2014-03-31 17:45:37 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-31 17:45:37 +0200
commitbd822bedfea5126b12c32523a68c3a1ac7a8931d (patch)
tree0fafd5ac037e3b62ad45e8808989ec89155618b4 /src/widgets/kernel/qwidgetwindow.cpp
parent84c10500b1730e8d947732728d190fde612fc840 (diff)
parent3b5c0bc0780f1749fed7c07bd8b691400a0282b7 (diff)
Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev
Diffstat (limited to 'src/widgets/kernel/qwidgetwindow.cpp')
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index e50736d6b8..ef138267bb 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -100,6 +100,7 @@ QWidgetWindow::QWidgetWindow(QWidget *widget)
setSurfaceType(QSurface::RasterGLSurface);
}
connect(m_widget, &QObject::objectNameChanged, this, &QWidgetWindow::updateObjectName);
+ connect(this, SIGNAL(screenChanged(QScreen*)), this, SLOT(repaintWindow()));
}
QWidgetWindow::~QWidgetWindow()
@@ -560,6 +561,19 @@ void QWidgetWindow::updateGeometry()
m_widget->data->fstrut_dirty = false;
}
+// Invalidates the backing store buffer and repaints immediately.
+// ### Qt 5.4: replace with QUpdateWindowRequestEvent.
+void QWidgetWindow::repaintWindow()
+{
+ if (!m_widget->isVisible() || !m_widget->updatesEnabled())
+ return;
+
+ QTLWExtra *tlwExtra = m_widget->window()->d_func()->maybeTopData();
+ if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore)
+ tlwExtra->backingStoreTracker->markDirty(m_widget->rect(), m_widget,
+ QWidgetBackingStore::UpdateNow, QWidgetBackingStore::BufferInvalid);
+}
+
Qt::WindowState effectiveState(Qt::WindowStates state);
// Store normal geometry used for saving application settings.