diff options
author | Antti Hölttä <AHoelttae@luxoft.com> | 2018-10-30 15:40:04 +0100 |
---|---|---|
committer | Antti Hölttä <AHoelttae@luxoft.com> | 2019-03-18 16:30:59 +0100 |
commit | 00fa5d9215d32124292fe3e45372acebac7b9d31 (patch) | |
tree | 021b35b301ae990ac9842f5ebf21d8c51db718a5 /plugin/cursornavigationattached.cpp | |
parent | 2f4ec044ee4c7cf14481e1e0b86fecf804fcd770 (diff) |
Refactor item registration with scopes in mind
ItemRegister class removed and items now keep track of their own
cursor navigable child items. Navigation happens now only between siblings.
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; +} |