diff options
author | Antti Hölttä <AHoelttae@luxoft.com> | 2018-12-17 15:08:17 +0100 |
---|---|---|
committer | Antti Hölttä <AHoelttae@luxoft.com> | 2019-03-18 16:34:23 +0100 |
commit | 593b6cd83f1bb991358564d030c08abd8b0ab3d8 (patch) | |
tree | 5627cf2f221c90a9a6cd743f3f75105b2066403c /plugin | |
parent | 726f0bca0d50a86ff30a367cbdd2f31190fcd30c (diff) |
Fix definition of CursorNavigation.hasCursor
An item may now have the cursor on it also if the active focus is
last set on one of its non-navigable children.
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/cursornavigation.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/plugin/cursornavigation.cpp b/plugin/cursornavigation.cpp index 0a09ade..418844c 100644 --- a/plugin/cursornavigation.cpp +++ b/plugin/cursornavigation.cpp @@ -166,9 +166,8 @@ void CursorNavigation::setCursorOnItem(CursorNavigationAttached *item) if (item && item->acceptsCursor()) { item->setHasCursor(true); m_currentItem = item; - m_currentItem->item()->forceActiveFocus(); - //m_currentItem->item()->setFocus(true); qWarning() << "Set cursor to " << item->item(); + m_currentItem->item()->forceActiveFocus(); } else { qWarning() << "Set cursor to NULL"; m_currentItem = nullptr; @@ -179,7 +178,17 @@ void CursorNavigation::setCursorOnItem(CursorNavigationAttached *item) void CursorNavigation::onActiveFocusItemChanged() { qWarning() << "onActiveFocusItemChanged, item:" << m_window->activeFocusItem(); - setCursorOnItem(cursorNavigationAttachment(m_window->activeFocusItem())); + + QQuickItem *item = m_window->activeFocusItem(); + while (item) { + CursorNavigationAttached *cursorNavigable = cursorNavigationAttachment(item); + if (cursorNavigable && cursorNavigable->available()) { + setCursorOnItem(cursorNavigable); + return; + } + item = item->parentItem(); + } + setCursorOnItem(nullptr); } void CursorNavigation::registerItem(CursorNavigationAttached* item) |