aboutsummaryrefslogtreecommitdiffstats
path: root/plugin/cursornavigationattached.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/cursornavigationattached.cpp')
-rw-r--r--plugin/cursornavigationattached.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/plugin/cursornavigationattached.cpp b/plugin/cursornavigationattached.cpp
index 50b3686..9d4aafe 100644
--- a/plugin/cursornavigationattached.cpp
+++ b/plugin/cursornavigationattached.cpp
@@ -5,19 +5,28 @@
CursorNavigationAttached::CursorNavigationAttached(QQuickItem *parent)
:QObject(parent),
-m_acceptsCursor(true),
m_cursorNavigation(nullptr),
+m_parentNavigable(nullptr),
+m_acceptsCursor(true),
m_hasCursor(false)
{
- connect(parent, &QQuickItem::windowChanged, this, &CursorNavigationAttached::onWindowChanged);
+ if (parent)
+ connect(parent, &QQuickItem::windowChanged, this, &CursorNavigationAttached::onWindowChanged);
- if (item()->window())
+ if (parent && item() && item()->window())
{
qDebug() << "Item has a window already";
onWindowChanged(item()->window());
}
}
+CursorNavigationAttached::~CursorNavigationAttached()
+{
+ qWarning() << "~CursorNavigationAttached";
+ if (m_cursorNavigation)
+ m_cursorNavigation->unregisterItem(this);
+}
+
bool CursorNavigationAttached::acceptsCursor() const
{
return m_acceptsCursor;
@@ -53,7 +62,7 @@ void CursorNavigationAttached::onWindowChanged(QQuickWindow *window)
{
qDebug() << "window changed, window = " << window;
if (m_cursorNavigation)
- m_cursorNavigation->m_itemRegister.unregisterItem(item());
+ m_cursorNavigation->unregisterItem(this);
if (window) {
m_cursorNavigation = CursorNavigation::cursorNavigationForWindow(window);
@@ -62,7 +71,7 @@ void CursorNavigationAttached::onWindowChanged(QQuickWindow *window)
}
if (m_cursorNavigation)
- m_cursorNavigation->m_itemRegister.registerItem(item());
+ m_cursorNavigation->registerItem(this);
//emit focusManagerChanged();
}
@@ -80,3 +89,8 @@ void CursorNavigationAttached::setHasCursor(bool hasCursor)
emit hasCursorChanged(m_hasCursor);
}
}
+
+QList<CursorNavigationAttached *> &CursorNavigationAttached::siblings()
+{
+ return m_parentNavigable->m_children;
+}