@@ -234,6 +234,10 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
234 delete m_qmlContentComponent;
234 delete m_qmlContentComponent;
235 m_qmlContentComponent = nullptr;
235 m_qmlContentComponent = nullptr;
237+ if (hasActiveFocus() && m_consumesInput && m_qmlSurface->live()) {
238+ m_qmlSurface->setActiveFocus(false);
237 disconnect(m_qmlSurface, nullptr, this, nullptr);
241 disconnect(m_qmlSurface, nullptr, this, nullptr);
238 m_qmlSurface->unregisterView((qintptr)this);
242 m_qmlSurface->unregisterView((qintptr)this);
@@ -243,8 +247,6 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
243 if (m_qmlSurface) {
247 if (m_qmlSurface) {
244 m_qmlSurface->registerView((qintptr)this);
248 m_qmlSurface->registerView((qintptr)this);
246− m_qmlSurface->setActiveFocus(hasActiveFocus());
248 updateSurfaceSize();
250 updateSurfaceSize();
249 updateMirSurfaceVisibility();
251 updateMirSurfaceVisibility();
@@ -277,6 +279,10 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
278 qFatal("MirSurfaceItem: Unhandled component status");
280 qFatal("MirSurfaceItem: Unhandled component status");
283+ if (m_consumesInput) {
284+ m_qmlSurface->setActiveFocus(hasActiveFocus());
282 Q_EMIT surfaceChanged(m_qmlSurface);
288 Q_EMIT surfaceChanged(m_qmlSurface);
@@ -285,7 +291,7 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
285void MirSurfaceItem::itemChange(ItemChange change, const ItemChangeData & value)
291void MirSurfaceItem::itemChange(ItemChange change, const ItemChangeData & value)
287 if (change == QQuickItem::ItemActiveFocusHasChanged) {
293 if (change == QQuickItem::ItemActiveFocusHasChanged) {
288− if (m_qmlSurface) {
294+ if (m_qmlSurface && m_consumesInput && m_qmlSurface->live()) {
289 m_qmlSurface->setActiveFocus(value.boolValue);
295 m_qmlSurface->setActiveFocus(value.boolValue);