diff options
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index ab93974f60..fbea3a0ee1 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -724,6 +724,7 @@ void QQuickKeyNavigationAttached::setFocusNavigation(QQuickItem *currentItem, co { QQuickItem *initialItem = currentItem; bool isNextItem = false; + QVector<QQuickItem *> visitedItems; do { isNextItem = false; if (currentItem->isVisible() && currentItem->isEnabled()) { @@ -734,13 +735,14 @@ void QQuickKeyNavigationAttached::setFocusNavigation(QQuickItem *currentItem, co if (attached) { QQuickItem *tempItem = qvariant_cast<QQuickItem*>(attached->property(dir)); if (tempItem) { + visitedItems.append(currentItem); currentItem = tempItem; isNextItem = true; } } } } - while (currentItem != initialItem && isNextItem); + while (currentItem != initialItem && isNextItem && !visitedItems.contains(currentItem)); } struct SigMap { |