diff options
author | Liang Qi <liang.qi@qt.io> | 2017-11-06 18:05:00 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-11-06 18:05:07 +0100 |
commit | 692ff260851575171be6751a7bdf34a744c2ed9d (patch) | |
tree | 67c2ee80fb6a477f731ebc1898a5dfd43c878d2d /src/quickwidgets | |
parent | 8740f35e69dad301eeaa2fc4b74ecab661cdc0c4 (diff) | |
parent | 5cb76fb3704947cfc4d575695b137460ecc8bbd9 (diff) |
Merge remote-tracking branch 'origin/5.10' into dev
Change-Id: I1ed923d72566af663555898c3ec708191eef8ae9
Diffstat (limited to 'src/quickwidgets')
-rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 12 | ||||
-rw-r--r-- | src/quickwidgets/qquickwidget_p.h | 1 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp index 1fea73818c..7c221850ab 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -201,6 +201,7 @@ QQuickWidgetPrivate::QQuickWidgetPrivate() , fakeHidden(false) , requestedSamples(0) , useSoftwareRenderer(false) + , forceFullUpdate(false) { } @@ -306,6 +307,10 @@ void QQuickWidgetPrivate::render(bool needsSync) auto softwareRenderer = static_cast<QSGSoftwareRenderer*>(cd->renderer); if (softwareRenderer && !softwareImage.isNull()) { softwareRenderer->setCurrentPaintDevice(&softwareImage); + if (forceFullUpdate) { + softwareRenderer->markDirty(); + forceFullUpdate = false; + } renderControl->render(); updateRegion += softwareRenderer->flushRegion(); @@ -917,6 +922,7 @@ void QQuickWidget::createFramebufferObject() const QSize imageSize = size() * devicePixelRatioF(); d->softwareImage = QImage(imageSize, QImage::Format_ARGB32_Premultiplied); d->softwareImage.setDevicePixelRatio(devicePixelRatioF()); + d->forceFullUpdate = true; return; } @@ -1392,8 +1398,6 @@ bool QQuickWidget::event(QEvent *e) Q_D(QQuickWidget); switch (e->type()) { - case QEvent::InputMethod: - case QEvent::InputMethodQuery: case QEvent::TouchBegin: case QEvent::TouchEnd: @@ -1402,6 +1406,10 @@ bool QQuickWidget::event(QEvent *e) // Touch events only have local and global positions, no need to map. return QCoreApplication::sendEvent(d->offscreenWindow, e); + case QEvent::InputMethod: + case QEvent::InputMethodQuery: + return QCoreApplication::sendEvent(d->offscreenWindow->focusObject(), e); + case QEvent::WindowChangeInternal: d->handleWindowChange(); break; diff --git a/src/quickwidgets/qquickwidget_p.h b/src/quickwidgets/qquickwidget_p.h index a92fb9f6bd..03571e8dc7 100644 --- a/src/quickwidgets/qquickwidget_p.h +++ b/src/quickwidgets/qquickwidget_p.h @@ -144,6 +144,7 @@ public: bool useSoftwareRenderer; QImage softwareImage; QRegion updateRegion; + bool forceFullUpdate; }; QT_END_NAMESPACE |