From d40b79cb1d3304f113df3091662760f585ee389e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20H=C3=B6ltt=C3=A4?= Date: Tue, 18 Dec 2018 11:38:37 +0100 Subject: Add more features for the demo app Add a common cursor indicator item that all navigable items may use for visualizing the cursor. Add a cursor navigable delegate. Make lists more generic by adding a CNItemDelegate. Add CNFlipButton that has flipping animations when used with CursorNavigation. Update Page4 with the new button type. --- CursorNavigation.pro | 5 +- DemoApplication/controls/CNButton.qml | 30 +------ DemoApplication/controls/CNCheckBox.qml | 11 ++- DemoApplication/controls/CNCursorIndicator.qml | 11 +++ DemoApplication/controls/CNFlipButton.qml | 90 +++++++++++++++++++++ DemoApplication/controls/CNItemDelegate.qml | 14 ++++ DemoApplication/controls/CNListView.qml | 61 +------------- DemoApplication/controls/CNRadioButton.qml | 8 +- DemoApplication/controls/CNSwitch.qml | 8 +- DemoApplication/controls/CNTabButton.qml | 10 +-- DemoApplication/controls/CNToolButton.qml | 8 +- DemoApplication/controls/qmldir | 2 + DemoApplication/main.qml | 71 ++++++++++++++-- DemoApplication/pages/Page2.qml | 79 +++++++++++++++--- DemoApplication/pages/Page3.qml | 1 + DemoApplication/pages/Page4.qml | 107 ++++--------------------- DemoApplication/pages/Page5.qml | 32 ++++++++ DemoApplication/pages/Page6.qml | 30 ------- plugin/cursornavigation.cpp | 2 +- plugin/cursornavigationattached.cpp | 7 +- plugin/spatialnavigation360.cpp | 6 +- 21 files changed, 322 insertions(+), 271 deletions(-) create mode 100644 DemoApplication/controls/CNCursorIndicator.qml create mode 100644 DemoApplication/controls/CNFlipButton.qml create mode 100644 DemoApplication/controls/CNItemDelegate.qml diff --git a/CursorNavigation.pro b/CursorNavigation.pro index 0a01c20..26eb54b 100644 --- a/CursorNavigation.pro +++ b/CursorNavigation.pro @@ -6,4 +6,7 @@ SUBDIRS += \ tests DISTFILES += \ - DemoApplication/pages/Page6.qml + DemoApplication/pages/Page6.qml \ + DemoApplication/controls/CNCursorIndicator.qml \ + DemoApplication/controls/CNListDelegate.qml \ + DemoApplication/controls/CNFlipButton.qml diff --git a/DemoApplication/controls/CNButton.qml b/DemoApplication/controls/CNButton.qml index fb8e1b8..6530fc4 100644 --- a/DemoApplication/controls/CNButton.qml +++ b/DemoApplication/controls/CNButton.qml @@ -8,28 +8,6 @@ Button { implicitHeight: 40 CursorNavigation.acceptsCursor: true - //property bool hasCursor: CursorNavigation.hasCursor - - Rotation { - id: rot - origin.x: root.width/2 - origin.y: root.height/2 - } - - transform: rot - - CursorNavigation.onHasCursorChanged: { - if (!hasCursor) - rot.angle = 0 - } - - CursorNavigation.onMagnitudeChanged: { - rot.angle = magnitude*45.0; - var a = angle * Math.PI/180.0 - rot.axis.x = -Math.sin(a) - rot.axis.y = Math.cos(a) - rot.axis.z = 0 - } background: Rectangle { anchors.fill: parent @@ -48,12 +26,6 @@ Button { text: root.text } - Rectangle { - border.width: 2 - border.color: "red" - anchors.fill: parent - visible: root.CursorNavigation.hasCursor - color: "transparent" - } + CNCursorIndicator { cursorItem : root; radius: 40} } } diff --git a/DemoApplication/controls/CNCheckBox.qml b/DemoApplication/controls/CNCheckBox.qml index d411d32..3fd12e9 100644 --- a/DemoApplication/controls/CNCheckBox.qml +++ b/DemoApplication/controls/CNCheckBox.qml @@ -3,12 +3,11 @@ import QtQuick.Controls 2.2 import CursorNavigation 1.0 CheckBox { + id: root CursorNavigation.acceptsCursor: true - Rectangle { - anchors.fill: parent - color: "transparent" - border.width: 2 - border.color: "red" - visible: parent.CursorNavigation.hasCursor + CNCursorIndicator { cursorItem : parent } + + CursorNavigation.onActivated: { + root.toggle() } } diff --git a/DemoApplication/controls/CNCursorIndicator.qml b/DemoApplication/controls/CNCursorIndicator.qml new file mode 100644 index 0000000..dc21d2e --- /dev/null +++ b/DemoApplication/controls/CNCursorIndicator.qml @@ -0,0 +1,11 @@ +import QtQuick 2.9 +import CursorNavigation 1.0 + +Rectangle { + property Item cursorItem + border.width: 2 + border.color: "#ff66aa" + anchors.fill: parent + visible: cursorItem.CursorNavigation.hasCursor + color: "transparent" +} diff --git a/DemoApplication/controls/CNFlipButton.qml b/DemoApplication/controls/CNFlipButton.qml new file mode 100644 index 0000000..319d10e --- /dev/null +++ b/DemoApplication/controls/CNFlipButton.qml @@ -0,0 +1,90 @@ +import QtQuick 2.11 +import QtQuick.Controls 2.4 +import CursorNavigation 1.0 + +CNButton { + id: root + + implicitWidth: (textLabel.contentWidth + 40) + implicitHeight: 40 + + CursorNavigation.acceptsCursor: true + + background: Rectangle { + anchors.fill: parent + radius: 4 + opacity: root.pressed ? 0.6 : 0.4 + color: "grey" + } + + contentItem: Item { + anchors.fill: parent + Label { + id: textLabel + anchors.centerIn: parent + font.pixelSize: 14 + color: "blue" + text: root.text + } + + CNCursorIndicator { cursorItem : root; radius: 4} + } + + Rotation { + id: rot + origin.x: root.width/2 + origin.y: root.height/2 + } + + + NumberAnimation { + id: returnAnimation + target: rot + property: "angle" + duration: 400 + easing.type: Easing.InOutQuad + from: 45 + to: 0 + } + + transform: rot + + CursorNavigation.onHasCursorChanged: { + if (!hasCursor) + returnAnimation.start() + } + + function flip(angle, magnitude) { + rot.angle = magnitude*45.0; + var a = angle * Math.PI/180.0 + rot.axis.x = -Math.sin(a) + rot.axis.y = Math.cos(a) + rot.axis.z = 0 + } + + CursorNavigation.onMagnitudeChanged: { + flip(angle, magnitude) + } + + + CursorNavigation.onMovedUp: { + console.log("moved up ffs") + flip(-90, 1); + returnAnimation.start() + } + + CursorNavigation.onMovedDown: { + flip(90, 1); + returnAnimation.start() + } + + CursorNavigation.onMovedRight: { + flip(0, 1); + returnAnimation.start() + } + + CursorNavigation.onMovedLeft: { + flip(180, 1); + returnAnimation.start() + } +} diff --git a/DemoApplication/controls/CNItemDelegate.qml b/DemoApplication/controls/CNItemDelegate.qml new file mode 100644 index 0000000..b99bee9 --- /dev/null +++ b/DemoApplication/controls/CNItemDelegate.qml @@ -0,0 +1,14 @@ +import QtQuick 2.9 +import QtQuick.Controls 2.4 +import CursorNavigation 1.0 + +ItemDelegate { + CursorNavigation.acceptsCursor: true + CNCursorIndicator { cursorItem : parent } + + //here we make sure the list's current index follows the cursor! + CursorNavigation.onHasCursorChanged: { + if (CursorNavigation.hasCursor) + parent.currentIndex = index + } +} diff --git a/DemoApplication/controls/CNListView.qml b/DemoApplication/controls/CNListView.qml index 7458231..ed4ff45 100644 --- a/DemoApplication/controls/CNListView.qml +++ b/DemoApplication/controls/CNListView.qml @@ -4,8 +4,9 @@ import CursorNavigation 1.0 ListView { id: listView - spacing: 4 - focus: true + + //use CNItemDelegate as the delegate! + /* when list view scopes the cursor, the cursor is passed further to its * currently focused child. this means, moving from outside to the list, * will return the cursor to the item that was previously selected @@ -13,60 +14,4 @@ ListView { */ CursorNavigation.acceptsCursor: true - Rectangle { - anchors.fill: parent - border.width: 1 - border.color: listView.activeFocus ? "red" : "black" - color: "transparent" - } - - highlight: Rectangle { - width: listView.width - height: 40 - color: "lightgrey" - opacity: 0.3 - } - - delegate: ItemDelegate { - id: deleg - width: listView.width - height: 40 - CursorNavigation.acceptsCursor: true - - //make sure the list's current index follows the cursor! - CursorNavigation.onHasCursorChanged: { - if (CursorNavigation.hasCursor) - listView.currentIndex = index - } - - contentItem: Rectangle { - width: listView.width - height: 40 - border.color: deleg.CursorNavigation.hasCursor ? "red" : "transparent" - - Row { - width: (parent.width - x) - height: 35 - x: 5 - anchors.verticalCenter: parent.verticalCenter - spacing: 10 - Rectangle { - width: parent.height - height: parent.height - radius: width/2 - color: colorCode - } - Text { - height: parent.height - font.bold: true - verticalAlignment: Text.AlignVCenter - text: name - } - } - } - onClicked: { - listView.currentIndex = index; - } - } - } diff --git a/DemoApplication/controls/CNRadioButton.qml b/DemoApplication/controls/CNRadioButton.qml index 1f649b3..8bdc06d 100644 --- a/DemoApplication/controls/CNRadioButton.qml +++ b/DemoApplication/controls/CNRadioButton.qml @@ -4,11 +4,5 @@ import CursorNavigation 1.0 RadioButton { CursorNavigation.acceptsCursor: true - Rectangle { - anchors.fill: parent - color: "transparent" - border.width: 2 - border.color: "red" - visible: parent.CursorNavigation.hasCursor - } + CNCursorIndicator { cursorItem : parent } } diff --git a/DemoApplication/controls/CNSwitch.qml b/DemoApplication/controls/CNSwitch.qml index e3f0e01..964faef 100644 --- a/DemoApplication/controls/CNSwitch.qml +++ b/DemoApplication/controls/CNSwitch.qml @@ -4,11 +4,5 @@ import CursorNavigation 1.0 Switch { CursorNavigation.acceptsCursor: true - Rectangle { - border.width: 2 - border.color: "red" - anchors.fill: parent - visible: parent.CursorNavigation.hasCursor - color: "transparent" - } + CNCursorIndicator { cursorItem : parent } } diff --git a/DemoApplication/controls/CNTabButton.qml b/DemoApplication/controls/CNTabButton.qml index 7557832..48e9205 100644 --- a/DemoApplication/controls/CNTabButton.qml +++ b/DemoApplication/controls/CNTabButton.qml @@ -3,12 +3,10 @@ import QtQuick.Controls 2.2 import CursorNavigation 1.0 TabButton { + id: root CursorNavigation.acceptsCursor: true - Rectangle { - anchors.fill: parent - color: "transparent" - border.width: 2 - border.color: "red" - visible: parent.CursorNavigation.hasCursor + CNCursorIndicator { cursorItem : parent } + CursorNavigation.onActivated: { + root.checked = true; } } diff --git a/DemoApplication/controls/CNToolButton.qml b/DemoApplication/controls/CNToolButton.qml index 65f2338..2da3a31 100644 --- a/DemoApplication/controls/CNToolButton.qml +++ b/DemoApplication/controls/CNToolButton.qml @@ -4,11 +4,5 @@ import CursorNavigation 1.0 ToolButton { CursorNavigation.acceptsCursor: true - Rectangle { - anchors.fill: parent - color: "transparent" - border.width: 2 - border.color: "red" - visible: parent.CursorNavigation.hasCursor - } + CNCursorIndicator { cursorItem : parent } } diff --git a/DemoApplication/controls/qmldir b/DemoApplication/controls/qmldir index 6def14f..554a44e 100644 --- a/DemoApplication/controls/qmldir +++ b/DemoApplication/controls/qmldir @@ -1,7 +1,9 @@ CNButton 1.0 CNButton.qml +CNFlipButton 1.0 CNFlipButton.qml CNTabButton 1.0 CNTabButton.qml CNToolButton 1.0 CNToolButton.qml CNRadioButton 1.0 CNRadioButton.qml CNSwitch 1.0 CNSwitch.qml CNCheckBox 1.0 CNCheckBox.qml CNListView 1.0 CNListView.qml +CNItemDelegate 1.0 CNItemDelegate.qml diff --git a/DemoApplication/main.qml b/DemoApplication/main.qml index 1bc600b..57e576b 100644 --- a/DemoApplication/main.qml +++ b/DemoApplication/main.qml @@ -1,6 +1,7 @@ import QtQuick 2.9 import QtQuick.Controls 2.2 import QtQuick.Layouts 1.3 +import QtGamepad 1.0 import CursorNavigation 1.0 import controls 1.0 @@ -92,15 +93,68 @@ ApplicationWindow { } } - contentData: StackLayout { + contentData: Item { + id: contentItem anchors.fill: parent - currentIndex: tabBar.currentIndex - Page1 { } - Page2 { } - Page3 { } - Page4 { } - Page5 { } - Page6 { } + StackLayout { + anchors.fill: parent + currentIndex: tabBar.currentIndex + Page1 { } + Page2 { } + Page3 { } + Page4 { } + Page5 { } + Page6 { } + } + + CursorNavigation.acceptsCursor: false + + Timer { + id: cooldownTimer + interval: 500 + repeat: false + } + + Rectangle { + id: pointerRect + border.color: "orange" + border.width: 1 + visible: false + color: "transparent" + } + + //use gamepad as another source of input. use analog stick input for magnitude information + Gamepad { + deviceId: GamepadManager.connectedGamepads.length > 0 ? GamepadManager.connectedGamepads[0] : -1 + + function handleMove() { + var v = Qt.vector2d(axisLeftX, axisLeftY) + if (v.length() >= 0.99 && !cooldownTimer.running) { + //console.log("handle joystick move, v=" + v) + contentItem.CursorNavigation.move(Qt.vector2d(axisLeftX, axisLeftY), 10) + cooldownTimer.start() + } else if (v.length() >= 0.1) { + contentItem.CursorNavigation.setMagnitude(v) + /*var item = parent.CursorNavigation.find(v, 10) + //cooldownTimer.start() + if (item != undefined) { + pointerRect.x = item.x + pointerRect.y = item.y + pointerRect.width = item.width + pointerRect.height = item.height + pointerRect.visible = true + }*/ + } else { + contentItem.CursorNavigation.setMagnitude(0,0) + pointerRect.visible = false + } + } + + onAxisLeftXChanged: handleMove() + onAxisLeftYChanged: handleMove() + onButtonAChanged: if (buttonA) contentItem.CursorNavigation.activate() + onButtonBChanged: if (buttonB) contentItem.CursorNavigation.activate() + } } //a trick that ensure the cursor can be moved on the tabbar without needing to click teh tabbar first @@ -108,4 +162,5 @@ ApplicationWindow { defaultButton.forceActiveFocus() } + } diff --git a/DemoApplication/pages/Page2.qml b/DemoApplication/pages/Page2.qml index 40be56c..76b45f1 100644 --- a/DemoApplication/pages/Page2.qml +++ b/DemoApplication/pages/Page2.qml @@ -18,12 +18,42 @@ Item { id: listView width: 198 height: 359 - //anchors.right: parent.right - //anchors.top: parent.top - //anchors.topMargin: 20 + spacing: 4 clip: true + delegate: CNItemDelegate { + width: listView.width + height: 40 + + contentItem: Item { + width: listView.width + height: 40 + + Row { + width: (parent.width - x) + height: 35 + x: 5 + anchors.verticalCenter: parent.verticalCenter + spacing: 10 + + Rectangle { + width: parent.height + height: parent.height + radius: width/2 + color: colorCode + } + + Text { + height: parent.height + font.bold: true + verticalAlignment: Text.AlignVCenter + text: name + } + } + } + } + model: ListModel { ListElement { name: "Grey" @@ -74,17 +104,11 @@ Item { CNButton { anchors.horizontalCenter: parent.horizontalCenter id: button3 - //anchors.top: listView.bottom - //anchors.topMargin: 20 - //anchors.right: parent.right - //anchors.rightMargin: 60 text: qsTr("Button") } } + Column { - //anchors.verticalCenter: parent.verticalCenter - //anchors.left: parent.left - //anchors.leftMargin: 50 spacing: 30 CNButton { text: qsTr("Button") @@ -99,5 +123,40 @@ Item { } } + CNListView { + id: listView2 + width: 198 + height: 359 + + spacing: 4 + clip: true + + /* when we set acceptsCursor false for the ListView itself, + * navigation between the list items and items outside of the list, + * is based on the item geometry and not just the whole ListView's geometry + */ + CursorNavigation.acceptsCursor: false + + delegate: CNItemDelegate { + width: listView.width + height: 40 + + CursorNavigation.onActivated: checkBox.toggle() + + contentItem: Item { + width: listView.width + height: 40 + + CheckBox{ + id: checkBox + text: "Item " + index + anchors.centerIn: parent + } + } + } + + model: 10 + } + } } diff --git a/DemoApplication/pages/Page3.qml b/DemoApplication/pages/Page3.qml index d0ca1bb..aa8d4dc 100644 --- a/DemoApplication/pages/Page3.qml +++ b/DemoApplication/pages/Page3.qml @@ -22,6 +22,7 @@ Item { CursorNavigation.onMovedDown: text = "moved down" CursorNavigation.onMovedRight: text = "moved right" CursorNavigation.onMovedLeft: text = "moved left" + CursorNavigation.onActivated: text = "Activated" } Grid { diff --git a/DemoApplication/pages/Page4.qml b/DemoApplication/pages/Page4.qml index 47828dd..e111745 100644 --- a/DemoApplication/pages/Page4.qml +++ b/DemoApplication/pages/Page4.qml @@ -1,108 +1,29 @@ import QtQuick 2.0 import CursorNavigation 1.0 -import QtGamepad 1.0 +import QtQuick.Layouts 1.3 import "../controls" Item { - //CursorNavigation.acceptsCursor: true - Timer { - id: cooldownTimer - interval: 500 - repeat: false - } + GridLayout { + columns: 4 + rows: 4 - Rectangle { - id: pointerRect - border.color: "orange" - border.width: 1 - visible: false - color: "transparent" - } + anchors.fill: parent + anchors.centerIn: parent - Gamepad { - deviceId: GamepadManager.connectedGamepads.length > 0 ? GamepadManager.connectedGamepads[0] : -1 + Repeater { + CNFlipButton { + Layout.minimumWidth: 110 + Layout.minimumHeight: 110 + text: "Button " + index - function handleMove() { - var v = Qt.vector2d(axisLeftX, axisLeftY) - if (v.length() >= 0.99 && !cooldownTimer.running) { - //console.log("handle joystick move, v=" + v) - parent.CursorNavigation.move(Qt.vector2d(axisLeftX, axisLeftY), 10) - cooldownTimer.start() - } else if (v.length() >= 0.1) { - parent.CursorNavigation.setMagnitude(v) - var item = parent.CursorNavigation.find(v, 10) - //cooldownTimer.start() - if (item != undefined) { - pointerRect.x = item.x - pointerRect.y = item.y - pointerRect.width = item.width - pointerRect.height = item.height - pointerRect.visible = true - } - } else { - parent.CursorNavigation.setMagnitude(0,0) - pointerRect.visible = false + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter } - } - - onAxisLeftXChanged: handleMove() - onAxisLeftYChanged: handleMove() - } - - CNButton { - id: cNButton - x: 20 - y: 20 - } - - CNButton { - id: cNButton1 - x: 20 - y: 120 - } - - CNButton { - id: cNButton2 - x: 20 - y: 220 - } - CNButton { - id: cNButton3 - x: 150 - y: 20 - } - - CNButton { - id: cNButton4 - x: 150 - y: 120 - } - - CNButton { - id: cNButton5 - x: 150 - y: 220 - focus: true - } - - CNButton { - id: cNButton6 - x: 280 - y: 20 - } - - CNButton { - id: cNButton7 - x: 280 - y: 120 - } + model: 16 + } - CNButton { - id: cNButton8 - x: 280 - y: 220 } } diff --git a/DemoApplication/pages/Page5.qml b/DemoApplication/pages/Page5.qml index 578f1f8..80fba90 100644 --- a/DemoApplication/pages/Page5.qml +++ b/DemoApplication/pages/Page5.qml @@ -111,6 +111,38 @@ Item { anchors.fill: parent spacing: 4 + delegate: CNItemDelegate { + width: listView.width + height: 40 + + contentItem: Item { + width: listView.width + height: 40 + + Row { + width: (parent.width - x) + height: 35 + x: 5 + anchors.verticalCenter: parent.verticalCenter + spacing: 10 + + Rectangle { + width: parent.height + height: parent.height + radius: width/2 + color: colorCode + } + + Text { + height: parent.height + font.bold: true + verticalAlignment: Text.AlignVCenter + text: name + } + } + } + } + model: ListModel { ListElement { name: "Joe"; colorCode: "grey" } ListElement { name: "Hillary"; colorCode: "red" } diff --git a/DemoApplication/pages/Page6.qml b/DemoApplication/pages/Page6.qml index a90857f..ece82ba 100644 --- a/DemoApplication/pages/Page6.qml +++ b/DemoApplication/pages/Page6.qml @@ -16,36 +16,6 @@ Item { repeat: false } - Gamepad { - deviceId: GamepadManager.connectedGamepads.length > 0 ? GamepadManager.connectedGamepads[0] : -1 - - function handleMove() { - var v = Qt.vector2d(axisLeftX, axisLeftY) - if (v.length() >= 0.99 && !cooldownTimer.running) { - //console.log("handle joystick move, v=" + v) - parent.CursorNavigation.moveCursor(Qt.vector2d(axisLeftX, axisLeftY), 10) - cooldownTimer.start() - } else if (v.length() >= 0.1) { - var item = parent.CursorNavigation.find(v, 10) - //cooldownTimer.start() - if (item != undefined) { - pointerRect.x = item.x - pointerRect.y = item.y - pointerRect.width = item.width+10 - pointerRect.height = item.height+10 - pointerRect.radius = item.width/2+5 - pointerRect.visible = true - } - } else { - pointerRect.visible = false - } - } - - onAxisLeftXChanged: handleMove() - onAxisLeftYChanged: handleMove() - } - - Plugin { id: mapPlugin name: "esri" //"osm", "mapboxgl", "esri", ... diff --git a/plugin/cursornavigation.cpp b/plugin/cursornavigation.cpp index 9049c82..bf2d390 100644 --- a/plugin/cursornavigation.cpp +++ b/plugin/cursornavigation.cpp @@ -41,7 +41,7 @@ CursorNavigationAttached *CursorNavigation::find(qreal angle, qreal tolerance, b if (!m_currentItem) return defaultItem(); - qWarning() << "find next item, angle = " << angle << " tolerance = " << tolerance << " discrete = " << discrete; + //qWarning() << "find next item, angle = " << angle << " tolerance = " << tolerance << " discrete = " << discrete; QList candidates; diff --git a/plugin/cursornavigationattached.cpp b/plugin/cursornavigationattached.cpp index 1757d12..39a7888 100644 --- a/plugin/cursornavigationattached.cpp +++ b/plugin/cursornavigationattached.cpp @@ -176,11 +176,8 @@ void CursorNavigationAttached::moveLeft() void CursorNavigationAttached::activate() { - if (m_cursorNavigation) { - CursorNavigationAttached *item = m_cursorNavigation->m_currentItem; - if (m_cursorNavigation->action(Activate) && item) - item->activated(); - } + if (m_cursorNavigation && m_cursorNavigation->m_currentItem) + m_cursorNavigation->m_currentItem->activated(); } void CursorNavigationAttached::moveForward() diff --git a/plugin/spatialnavigation360.cpp b/plugin/spatialnavigation360.cpp index 0e6d19b..534a3d2 100644 --- a/plugin/spatialnavigation360.cpp +++ b/plugin/spatialnavigation360.cpp @@ -115,7 +115,7 @@ CursorNavigationAttached* SpatialNavigation360::getNextCandidate( * -remember to use current item's coord system as the reference!!! */ - qWarning() << "##### navigation360: start, angle = " << cmd.angle << " tolerance = " << cmd.angleTolerance; + //qWarning() << "##### navigation360: start, angle = " << cmd.angle << " tolerance = " << cmd.angleTolerance; if (candidates.isEmpty()) return nullptr; @@ -179,8 +179,8 @@ CursorNavigationAttached* SpatialNavigation360::getNextCandidate( } } - qWarning() << "##### end, directHit = " << - directHitItem << " withinTolerances = " << withinToleranceItem; + //qWarning() << "##### end, directHit = " << + // directHitItem << " withinTolerances = " << withinToleranceItem; if (directHitItem) return directHitItem; -- cgit v1.2.3