diff options
Diffstat (limited to 'plugin/cursornavigation.cpp')
-rw-r--r-- | plugin/cursornavigation.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/plugin/cursornavigation.cpp b/plugin/cursornavigation.cpp index 71ea2d8..ebcd064 100644 --- a/plugin/cursornavigation.cpp +++ b/plugin/cursornavigation.cpp @@ -44,6 +44,8 @@ #include <QQuickItem> #include <QtMath> +Q_LOGGING_CATEGORY(cursorNavigationLog, "cursor.navigation") + const char CursorNavigation::windowPropertyName[] = "cursor_navigation"; CursorNavigation::CursorNavigation(QQuickWindow *parent) @@ -60,9 +62,9 @@ CursorNavigation::CursorNavigation(QQuickWindow *parent) onActiveFocusItemChanged(); } -bool CursorNavigation::move(qreal angle, qreal tolerance, bool discrete) +bool CursorNavigation::move(qreal angle, qreal offset, qreal tolerance, bool discrete) { - QQuickItem *foundItem = find(angle, tolerance, discrete); + QQuickItem *foundItem = find(angle + offset, tolerance, discrete); CursorNavigationAttached *nextItem = cursorNavigationAttachment(foundItem); if (nextItem) { @@ -77,14 +79,16 @@ bool CursorNavigation::move(qreal angle, qreal tolerance, bool discrete) QQuickItem *CursorNavigation::find(qreal angle, qreal tolerance, bool discrete) { - if (!m_currentItem) - return defaultItem()->item(); + if (!m_currentItem) { + auto defaultItemRef = defaultItem(); + return defaultItemRef ? defaultItemRef->item() : nullptr; + } if (m_currentItem->m_redirects.size()) { for (auto redirect : m_currentItem->m_redirects) { if (redirect->angleIsIncluded(angle)) { if (!redirect->target()) - qWarning() << "Redirect target is null"; + qCWarning(cursorNavigationLog) << "Redirect target is null"; return redirect->target(); } } @@ -120,7 +124,7 @@ QQuickItem *CursorNavigation::find(qreal angle, qreal tolerance, bool discrete) bool CursorNavigation::action(Action action) { - qWarning() << "handleActionCommand, action= " << action; + qCWarning(cursorNavigationLog) << "handleActionCommand, action= " << action; switch (action) { case Forward: break; @@ -145,7 +149,7 @@ bool CursorNavigation::action(Action action) } escapeTarget = m_currentItem->m_parentNavigable->m_parentNavigable->item(); } - qWarning() << "escaping, target = " << escapeTarget; + qCWarning(cursorNavigationLog) << "escaping, target = " << escapeTarget; setCursorOnItem(nullptr); escapeTarget->forceActiveFocus(); onActiveFocusItemChanged(); @@ -167,13 +171,12 @@ CursorNavigationAttached *CursorNavigation::qmlAttachedProperties(QObject *objec } if (!qobject_cast<QQuickItem *>(object)) { - qWarning("Cannot manage cursor for a non-Item!"); + qCWarning(cursorNavigationLog) << "Cannot manage cursor for a non-Item!"; return nullptr; } QQuickItem *item = static_cast<QQuickItem *>(object); - qWarning() << "Created a new CN attachment"; return new CursorNavigationAttached(item); } @@ -186,7 +189,7 @@ CursorNavigation *CursorNavigation::cursorNavigationForWindow(QQuickWindow *wind if (!oldCursorNavigation.isNull()) return oldCursorNavigation.value<CursorNavigation *>(); - qWarning() << "Created a new CN engine"; + qCWarning(cursorNavigationLog) << "Created a new CN engine"; CursorNavigation *cursorNavigation = new CursorNavigation(window); window->setProperty(windowPropertyName, QVariant::fromValue(cursorNavigation)); @@ -194,7 +197,7 @@ CursorNavigation *CursorNavigation::cursorNavigationForWindow(QQuickWindow *wind /*if (QQmlEngine *engine = cn->qmlEngine(window)) { engine->rootContext()->setContextProperty("_cursorNavigation", cn); } else { - qDebug() << "Couldn't find QQmlEngine"; + qCDebug(cursorNavigationLog) << "Couldn't find QQmlEngine"; }*/ return cursorNavigation; @@ -207,7 +210,6 @@ CursorNavigationAttached *CursorNavigation::cursorNavigationAttachment(QQuickIte void CursorNavigation::setCursorOnItem(CursorNavigationAttached *item) { - qWarning() << "set cursor on item " << item << " , currentItem " << m_currentItem; if (item != m_currentItem) { if (m_currentItem) { m_currentItem->setHasCursor(false); @@ -216,10 +218,8 @@ void CursorNavigation::setCursorOnItem(CursorNavigationAttached *item) if (item && item->acceptsCursor()) { item->setHasCursor(true); m_currentItem = item; - qWarning() << "Set cursor to " << item->item(); m_currentItem->item()->forceActiveFocus(); } else { - qWarning() << "Set cursor to NULL"; m_currentItem = nullptr; } } @@ -227,7 +227,8 @@ void CursorNavigation::setCursorOnItem(CursorNavigationAttached *item) void CursorNavigation::onActiveFocusItemChanged() { - qWarning() << "onActiveFocusItemChanged, item:" << m_window->activeFocusItem(); + qCWarning(cursorNavigationLog) << "onActiveFocusItemChanged, item:" + << m_window->activeFocusItem(); QQuickItem *item = m_window->activeFocusItem(); while (item) { @@ -243,7 +244,7 @@ void CursorNavigation::onActiveFocusItemChanged() void CursorNavigation::registerItem(CursorNavigationAttached* item) { - //qWarning() << "register item " << item; + //qCWarning(cursorNavigationLog) << "register item " << item; if (!item) return; @@ -285,7 +286,7 @@ void CursorNavigation::registerItem(CursorNavigationAttached* item) void CursorNavigation::unregisterItem(CursorNavigationAttached* item) { - //qWarning() << "unregister item " << item; + //qCWarning(cursorNavigationLog) << "unregister item " << item; if (item == m_currentItem) setCursorOnItem(nullptr); |