diff options
Diffstat (limited to 'plugin/cursornavigationattached.cpp')
-rw-r--r-- | plugin/cursornavigationattached.cpp | 24 |
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; +} |