on xenial help sign in
Added handling of active focus on consumesInput change
f909fbfNick Dedekind
tests/mocks/Unity/Application/MirSurfaceItem.cpp+8−5
@@ -56,7 +56,11 @@ MirSurfaceItem::MirSurfaceItem(QQuickItem *parent)
56 Qt::ExtraButton9 | Qt::ExtraButton10 | Qt::ExtraButton11 |
56 Qt::ExtraButton9 | Qt::ExtraButton10 | Qt::ExtraButton11 |
57 Qt::ExtraButton12 | Qt::ExtraButton13);
57 Qt::ExtraButton12 | Qt::ExtraButton13);
58
58
59+ connect(this, &QQuickItem::activeFocusChanged, this, &MirSurfaceItem::updateMirSurfaceActiveFocus);
59 connect(this, &QQuickItem::visibleChanged, this, &MirSurfaceItem::updateMirSurfaceVisibility);
60 connect(this, &QQuickItem::visibleChanged, this, &MirSurfaceItem::updateMirSurfaceVisibility);
61+ connect(this, &MirSurfaceItem::consumesInputChanged, this, [this]() {
62+ updateMirSurfaceActiveFocus(hasActiveFocus());
63+ });
60}
64}
61
65
62MirSurfaceItem::~MirSurfaceItem()
66MirSurfaceItem::~MirSurfaceItem()
@@ -288,12 +292,11 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
288 Q_EMIT surfaceChanged(m_qmlSurface);
292 Q_EMIT surfaceChanged(m_qmlSurface);
289}
293}
290
294
291−void MirSurfaceItem::itemChange(ItemChange change, const ItemChangeData & value)
295+
296+void MirSurfaceItem::updateMirSurfaceActiveFocus(bool focused)
292{
297{
293− if (change == QQuickItem::ItemActiveFocusHasChanged) {
294− if (m_qmlSurface && m_consumesInput && m_qmlSurface->live()) {
298+ if (m_qmlSurface && m_consumesInput && m_qmlSurface->live()) {
295− m_qmlSurface->setActiveFocus(value.boolValue);
299+ m_qmlSurface->setActiveFocus(focused);
296− }
297 }
300 }
298}
301}
299
302
tests/mocks/Unity/Application/MirSurfaceItem.h+1−1
@@ -98,12 +98,12 @@ protected:
98 void mousePressEvent(QMouseEvent * event) override;
98 void mousePressEvent(QMouseEvent * event) override;
99 void mouseMoveEvent(QMouseEvent * event) override;
99 void mouseMoveEvent(QMouseEvent * event) override;
100 void mouseReleaseEvent(QMouseEvent * event) override;
100 void mouseReleaseEvent(QMouseEvent * event) override;
101− void itemChange(ItemChange change, const ItemChangeData & value) override;
102
101
103private Q_SLOTS:
102private Q_SLOTS:
104 void onComponentStatusChanged(QQmlComponent::Status status);
103 void onComponentStatusChanged(QQmlComponent::Status status);
105 void updateScreenshot(QUrl screenshot);
104 void updateScreenshot(QUrl screenshot);
106 void updateMirSurfaceVisibility();
105 void updateMirSurfaceVisibility();
106+ void updateMirSurfaceActiveFocus(bool focused);
107
107
108private:
108private:
109 void createQmlContentItem();
109 void createQmlContentItem();