aboutsummaryrefslogtreecommitdiffstats
path: root/plugin/cursornavigation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/cursornavigation.cpp')
-rw-r--r--plugin/cursornavigation.cpp35
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);