summaryrefslogtreecommitdiffstats
path: root/src/window-lib
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@qt.io>2023-10-09 20:51:16 +0200
committerRobert Griebl <robert.griebl@qt.io>2023-11-08 16:19:36 +0100
commitfef2d9a8666e333b4e01518936de12b326d25478 (patch)
treed87e90d7f6ddfee83e729645bec8cb1ba5cdfa13 /src/window-lib
parent38ebc214dca4fd45560c91a89998378bb2492db9 (diff)
Add an auto-test for window focus/activation handling
Also added a getter for the actual "adapter" Quick item on the sys-ui side (backingItem), as it is needed for this test. It might come in handy for user projects as well, especially to get direct access to the QWaylandQuickItem. Change-Id: I9665ca31566e98bae086b8cdc1aa2df5cab4023e Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>
Diffstat (limited to 'src/window-lib')
-rw-r--r--src/window-lib/windowitem.cpp14
-rw-r--r--src/window-lib/windowitem.h5
2 files changed, 19 insertions, 0 deletions
diff --git a/src/window-lib/windowitem.cpp b/src/window-lib/windowitem.cpp
index cbe059ff..932016f3 100644
--- a/src/window-lib/windowitem.cpp
+++ b/src/window-lib/windowitem.cpp
@@ -310,6 +310,11 @@ void WindowItem::setFocusOnClick(bool newFocusOnClick)
m_impl->setFocusOnClick(newFocusOnClick);
}
+QQuickItem *WindowItem::backingItem() const
+{
+ return m_impl ? m_impl->backingItem() : nullptr;
+}
+
///////////////////////////////////////////////////////////////////////////////////////////////////
// WindowItem::InProcessImpl
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -393,6 +398,10 @@ void WindowItem::InProcessImpl::setFocusOnClick(bool focusOnClick)
m_inProcessWindow->rootItem()->setFocusOnClick(focusOnClick);
}
+QQuickItem *WindowItem::InProcessImpl::backingItem()
+{
+ return m_inProcessWindow ? m_inProcessWindow->rootItem() : nullptr;
+}
///////////////////////////////////////////////////////////////////////////////////////////////////
// WindowItem::WaylandImpl
@@ -472,6 +481,11 @@ void WindowItem::WaylandImpl::setFocusOnClick(bool focusOnClick)
m_waylandItem->setFocusOnClick(focusOnClick);
}
+QQuickItem *WindowItem::WaylandImpl::backingItem()
+{
+ return m_waylandItem;
+}
+
void WindowItem::WaylandImpl::tearDown()
{
m_waylandItem->setSurface(nullptr);
diff --git a/src/window-lib/windowitem.h b/src/window-lib/windowitem.h
index 39014108..85290019 100644
--- a/src/window-lib/windowitem.h
+++ b/src/window-lib/windowitem.h
@@ -38,6 +38,7 @@ class WindowItem : public QQuickFocusScope
Q_PROPERTY(QQmlListProperty<QObject> contentItemData READ contentItemData NOTIFY contentItemDataChanged FINAL)
Q_PROPERTY(bool focusOnClick READ focusOnClick WRITE setFocusOnClick NOTIFY focusOnClickChanged REVISION(2, 7) FINAL)
+ Q_PROPERTY(QQuickItem *backingItem READ backingItem NOTIFY windowChanged REVISION(2, 7) FINAL)
Q_CLASSINFO("DefaultProperty", "contentItemData")
public:
@@ -46,6 +47,7 @@ public:
Window *window() const;
void setWindow(Window *window);
+ QQuickItem *backingItem() const;
bool primary() const;
Q_INVOKABLE void makePrimary();
@@ -91,6 +93,7 @@ private:
virtual void forwardActiveFocus() = 0;
virtual bool focusOnClick() const = 0;
virtual void setFocusOnClick(bool focusOnClick) = 0;
+ virtual QQuickItem *backingItem() = 0;
WindowItem *q;
};
@@ -106,6 +109,7 @@ private:
void forwardActiveFocus() override;
bool focusOnClick() const override;
void setFocusOnClick(bool focusOnClick) override;
+ QQuickItem *backingItem() override;
InProcessWindow *m_inProcessWindow{nullptr};
QQuickItem *m_shaderEffectSource{nullptr};
@@ -126,6 +130,7 @@ private:
void forwardActiveFocus() override;
bool focusOnClick() const override;
void setFocusOnClick(bool focusOnClick) override;
+ QQuickItem *backingItem() override;
WaylandWindow *m_waylandWindow{nullptr};
WaylandQuickIgnoreKeyItem *m_waylandItem{nullptr};