diff options
author | Robert Griebl <robert.griebl@qt.io> | 2023-10-09 20:51:16 +0200 |
---|---|---|
committer | Robert Griebl <robert.griebl@qt.io> | 2023-11-08 16:19:36 +0100 |
commit | fef2d9a8666e333b4e01518936de12b326d25478 (patch) | |
tree | d87e90d7f6ddfee83e729645bec8cb1ba5cdfa13 /src/window-lib | |
parent | 38ebc214dca4fd45560c91a89998378bb2492db9 (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.cpp | 14 | ||||
-rw-r--r-- | src/window-lib/windowitem.h | 5 |
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}; |