aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickwidgets
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-11-06 18:05:00 +0100
committerLiang Qi <liang.qi@qt.io>2017-11-06 18:05:07 +0100
commit692ff260851575171be6751a7bdf34a744c2ed9d (patch)
tree67c2ee80fb6a477f731ebc1898a5dfd43c878d2d /src/quickwidgets
parent8740f35e69dad301eeaa2fc4b74ecab661cdc0c4 (diff)
parent5cb76fb3704947cfc4d575695b137460ecc8bbd9 (diff)
Merge remote-tracking branch 'origin/5.10' into dev
Diffstat (limited to 'src/quickwidgets')
-rw-r--r--src/quickwidgets/qquickwidget.cpp12
-rw-r--r--src/quickwidgets/qquickwidget_p.h1
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