summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@digia.com>2014-09-24 13:17:51 +0200
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2014-10-08 17:53:30 +0200
commit41f0d5b9d931a378af66f735c57753146053664e (patch)
tree0718f6d8b5fb027730407e1d1a86ebc402709ec7
parent6d7a4f8400c28e2485a18a4ffdad951998257577 (diff)
downloadqtquickcontrols-41f0d5b9d931a378af66f735c57753146053664e.tar.gz
Controls: Fixed support for Keys attached property on TableView
By forwarding key events from the internal control. The key events from internal are Keys.forwardTo TableView, then user could customize their own behavior. Autotest are included. [ChangeLog][TableView] Fixed support for Keys attached property, by forwarding key events from the internal control. Change-Id: Ic59273ae2589bf6d1a0ccf5babf8fd1741376e6c Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
-rw-r--r--src/controls/TableView.qml3
-rw-r--r--tests/auto/controls/data/tableview/tv_keys.qml60
-rw-r--r--tests/auto/controls/data/tst_tableview.qml31
3 files changed, 93 insertions, 1 deletions
diff --git a/src/controls/TableView.qml b/src/controls/TableView.qml
index 41d0ca48..11b0662a 100644
--- a/src/controls/TableView.qml
+++ b/src/controls/TableView.qml
@@ -572,7 +572,7 @@ ScrollView {
ListView {
id: listView
focus: true
- activeFocusOnTab: root.activeFocusOnTab
+ activeFocusOnTab: false
anchors.topMargin: headerVisible ? tableHeader.height : 0
anchors.fill: parent
currentIndex: -1
@@ -788,6 +788,7 @@ ScrollView {
}
}
+ Keys.forwardTo: root
Keys.onUpPressed: {
event.accepted = false
__scroller.blockUpdates = true;
diff --git a/tests/auto/controls/data/tableview/tv_keys.qml b/tests/auto/controls/data/tableview/tv_keys.qml
new file mode 100644
index 00000000..2102f55c
--- /dev/null
+++ b/tests/auto/controls/data/tableview/tv_keys.qml
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Controls 1.2
+
+Row {
+ width: 100
+ height: 50
+ spacing: 10
+ property alias control1: _control1
+ TableView {
+ id: _control1
+ property bool gotit: false
+ Keys.onPressed: {
+ if ((!gotit) && (event.key === Qt.Key_Down)) {
+ gotit = true;
+ event.accepted = true;
+ return;
+ }
+ }
+ }
+}
diff --git a/tests/auto/controls/data/tst_tableview.qml b/tests/auto/controls/data/tst_tableview.qml
index b802e7ff..9e37f45e 100644
--- a/tests/auto/controls/data/tst_tableview.qml
+++ b/tests/auto/controls/data/tst_tableview.qml
@@ -179,6 +179,37 @@ TestCase {
table.destroy()
}
+ function test_keys() {
+ var component = Qt.createComponent("tableview/tv_keys.qml")
+ compare(component.status, Component.Ready)
+ var test = component.createObject(container);
+ verify(test !== null, "test control created is null")
+ var control1 = test.control1
+ verify(control1 !== null)
+
+ control1.forceActiveFocus()
+ verify(control1.activeFocus)
+
+ control1.selectionMode = SelectionMode.SingleSelection
+ control1.model = 3
+ control1.currentRow = -1
+
+ verify(control1.gotit === false)
+ verify(control1.currentRow === -1)
+
+ keyClick(Qt.Key_Down);
+ verify(control1.activeFocus)
+ verify(control1.gotit === true)
+ verify(control1.currentRow === -1)
+
+ keyClick(Qt.Key_Down);
+ verify(control1.activeFocus)
+ verify(control1.gotit === true)
+ verify(control1.currentRow === 0)
+
+ test.destroy()
+ }
+
function test_selection() {
var component = Qt.createComponent("tableview/table2_qabstractitemmodel.qml")