aboutsummaryrefslogtreecommitdiffstats
path: root/plugin
diff options
context:
space:
mode:
authorAntti Hölttä <AHoelttae@luxoft.com>2018-12-03 13:44:15 +0100
committerAntti Hölttä <AHoelttae@luxoft.com>2019-03-18 16:33:53 +0100
commita9445c3b9c8f51a229b62c25df1aeebe5c85c88d (patch)
treed431757016a1892135859fae565dfed759ccdeff /plugin
parent2d45defe15ca9a94f6eba992af3d544fcd5dfb32 (diff)
Cursor now movable only to items that set the acceptsCursor value to true
Diffstat (limited to 'plugin')
-rw-r--r--plugin/cursornavigation.cpp4
-rw-r--r--plugin/cursornavigationattached.cpp59
2 files changed, 42 insertions, 21 deletions
diff --git a/plugin/cursornavigation.cpp b/plugin/cursornavigation.cpp
index e35a939..718a24b 100644
--- a/plugin/cursornavigation.cpp
+++ b/plugin/cursornavigation.cpp
@@ -176,7 +176,7 @@ void CursorNavigation::registerItem(CursorNavigationAttached* item)
QQuickItem *parentItem = item->item()->parentItem();
CursorNavigationAttached *parentCNA=nullptr;
while (parentItem) {
- if ((parentCNA=CursorNavigation::cursorNavigationAttachment(parentItem)))
+ if ((parentCNA=CursorNavigation::cursorNavigationAttachment(parentItem)) && parentCNA->acceptsCursor())
break;
parentItem = parentItem->parentItem();
}
@@ -198,6 +198,8 @@ void CursorNavigation::unregisterItem(CursorNavigationAttached* item)
if (item->m_parentNavigable)
item->m_parentNavigable->m_children.removeOne(item);
+
+ //TODO if the item that is being unregistered has children, they should be reassigned to the item's parent
}
void CursorNavigation::_move(qreal angle, qreal tolerance, bool discrete)
diff --git a/plugin/cursornavigationattached.cpp b/plugin/cursornavigationattached.cpp
index af34bfd..1c68ac9 100644
--- a/plugin/cursornavigationattached.cpp
+++ b/plugin/cursornavigationattached.cpp
@@ -37,6 +37,13 @@ void CursorNavigationAttached::setAcceptsCursor(bool acceptsCursor)
{
if (acceptsCursor != m_acceptsCursor) {
m_acceptsCursor=acceptsCursor;
+ if (m_cursorNavigation) {
+ if (m_acceptsCursor)
+ m_cursorNavigation->registerItem(this);
+ else
+ m_cursorNavigation->unregisterItem(this);
+ }
+
emit acceptsCursorChanged(m_acceptsCursor);
}
}
@@ -71,75 +78,89 @@ void CursorNavigationAttached::setEscapeTarget(QQuickItem *escapeTarget)
void CursorNavigationAttached::move(qreal angle, qreal tolerance)
{
qWarning() << "move";
- m_cursorNavigation->move(angle, tolerance, false);
+ if (m_cursorNavigation)
+ m_cursorNavigation->move(angle, tolerance, false);
}
void CursorNavigationAttached::move(QVector2D vector, qreal tolerance)
{
qWarning() << "move";
- m_cursorNavigation->move(vector, tolerance, false);
+ if (m_cursorNavigation)
+ m_cursorNavigation->move(vector, tolerance, false);
}
QQuickItem *CursorNavigationAttached::find(qreal angle, qreal tolerance)
{
- CursorNavigationAttached *item = m_cursorNavigation->find(angle, tolerance, false);
- if (item)
- return item->item();
+ if (m_cursorNavigation) {
+ CursorNavigationAttached *item = m_cursorNavigation->find(angle, tolerance, false);
+ if (item)
+ return item->item();
+ }
return nullptr;
}
QQuickItem *CursorNavigationAttached::find(QVector2D vector, qreal tolerance)
{
- CursorNavigationAttached *item = m_cursorNavigation->find(vector, tolerance, false);
- if (item)
- return item->item();
+ if (m_cursorNavigation) {
+ CursorNavigationAttached *item = m_cursorNavigation->find(vector, tolerance, false);
+ if (item)
+ return item->item();
+ }
return nullptr;
}
void CursorNavigationAttached::moveUp()
{
- m_cursorNavigation->move(-90, 0, true);
+ if (m_cursorNavigation)
+ m_cursorNavigation->move(-90, 0, true);
}
void CursorNavigationAttached::moveDown()
{
- m_cursorNavigation->move(90, 0, true);
+ if (m_cursorNavigation)
+ m_cursorNavigation->move(90, 0, true);
}
void CursorNavigationAttached::moveRight()
{
- m_cursorNavigation->move(0, 0, true);
+ if (m_cursorNavigation)
+ m_cursorNavigation->move(0, 0, true);
}
void CursorNavigationAttached::moveLeft()
{
- m_cursorNavigation->move(180, 0, true);
+ if (m_cursorNavigation)
+ m_cursorNavigation->move(180, 0, true);
}
void CursorNavigationAttached::activate()
{
- m_cursorNavigation->action(Activate);
+ if (m_cursorNavigation)
+ m_cursorNavigation->action(Activate);
}
void CursorNavigationAttached::forward()
{
- m_cursorNavigation->action(Forward);
+ if (m_cursorNavigation)
+ m_cursorNavigation->action(Forward);
}
void CursorNavigationAttached::back()
{
- m_cursorNavigation->action(Back);
+ if (m_cursorNavigation)
+ m_cursorNavigation->action(Back);
}
void CursorNavigationAttached::escape()
{
- m_cursorNavigation->action(Escape);
+ if (m_cursorNavigation)
+ m_cursorNavigation->action(Escape);
}
void CursorNavigationAttached::onWindowChanged(QQuickWindow *window)
{
qDebug() << "window changed, window = " << window;
- if (m_cursorNavigation)
+ if (m_cursorNavigation && m_acceptsCursor)
m_cursorNavigation->unregisterItem(this);
if (window) {
@@ -148,10 +169,8 @@ void CursorNavigationAttached::onWindowChanged(QQuickWindow *window)
m_cursorNavigation = nullptr;
}
- if (m_cursorNavigation)
+ if (m_cursorNavigation && m_acceptsCursor)
m_cursorNavigation->registerItem(this);
-
- //emit focusManagerChanged();
}
QQuickItem *CursorNavigationAttached::item() const