summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/controls/TableView.qml19
-rw-r--r--tests/auto/controls/data/tableview/table_delegate3.qml3
-rw-r--r--tests/auto/controls/data/tableview/table_mousearea.qml3
-rw-r--r--tests/auto/controls/data/tst_tableview.qml12
4 files changed, 37 insertions, 0 deletions
diff --git a/src/controls/TableView.qml b/src/controls/TableView.qml
index 386edcf8d..d8db67b9f 100644
--- a/src/controls/TableView.qml
+++ b/src/controls/TableView.qml
@@ -301,6 +301,19 @@ ScrollView {
*/
signal doubleClicked(int row)
+ /*! \qmlsignal TableView::pressAndHold(int row)
+ \since QtQuick.Controls 1.3
+
+ Emitted when the user presses and holds a valid row.
+
+ \a row int provides access to the pressed row index.
+
+ \note This signal is only emitted if the row or item delegate does not accept mouse events.
+
+ The corresponding handler is \c onPressAndHold.
+ */
+ signal pressAndHold(int row)
+
/*!
\qmlmethod TableView::positionViewAtRow( int row, PositionMode mode )
@@ -705,6 +718,12 @@ ScrollView {
}
}
+ onPressAndHold: {
+ var pressIndex = listView.indexAt(0, mouseY + listView.contentY)
+ if (pressIndex > -1)
+ root.pressAndHold(pressIndex)
+ }
+
// Note: with boolean preventStealing we are keeping the flickable from
// eating our mouse press events
preventStealing: !Settings.hasTouchScreen
diff --git a/tests/auto/controls/data/tableview/table_delegate3.qml b/tests/auto/controls/data/tableview/table_delegate3.qml
index 48eb95104..e1c20a108 100644
--- a/tests/auto/controls/data/tableview/table_delegate3.qml
+++ b/tests/auto/controls/data/tableview/table_delegate3.qml
@@ -48,6 +48,7 @@ TableView {
property bool _clicked: false
property bool _released: false
property bool _doubleClicked: false
+ property bool _pressAndHold: false
headerVisible: false
@@ -56,6 +57,7 @@ TableView {
_released = false
_clicked = false
_doubleClicked = false
+ _pressAndHold = false
}
TableViewColumn {
@@ -71,6 +73,7 @@ TableView {
onClicked: table._clicked = true
onReleased: table._released = true
onDoubleClicked: table._doubleClicked = true
+ onPressAndHold: table._pressAndHold = true
}
}
}
diff --git a/tests/auto/controls/data/tableview/table_mousearea.qml b/tests/auto/controls/data/tableview/table_mousearea.qml
index c21e54cee..d96ca842e 100644
--- a/tests/auto/controls/data/tableview/table_mousearea.qml
+++ b/tests/auto/controls/data/tableview/table_mousearea.qml
@@ -49,6 +49,7 @@ TableView {
property bool _clicked: false
property bool _released: false
property bool _doubleClicked: false
+ property bool _pressAndHold: false
headerVisible: false
@@ -57,6 +58,7 @@ TableView {
_released = false
_clicked = false
_doubleClicked = false
+ _pressAndHold = false
}
TableViewColumn {
@@ -73,5 +75,6 @@ TableView {
onClicked: table._clicked = true
onReleased: table._released = true
onDoubleClicked: table._doubleClicked = true
+ onPressAndHold: table._pressAndHold = true
}
}
diff --git a/tests/auto/controls/data/tst_tableview.qml b/tests/auto/controls/data/tst_tableview.qml
index c99d2dcd9..40eb58432 100644
--- a/tests/auto/controls/data/tst_tableview.qml
+++ b/tests/auto/controls/data/tst_tableview.qml
@@ -542,6 +542,7 @@ TestCase {
compare(table._clicked, false)
compare(table._released, false)
compare(table._doubleClicked, false)
+ compare(table._pressAndHold, false)
mousePress(table, 25 , 10, Qt.LeftButton)
compare(table._pressed, true)
@@ -559,6 +560,11 @@ TestCase {
compare(table._doubleClicked, true)
table.clearTestData()
+ mousePress(table, 25 , 10, Qt.LeftButton)
+ compare(table._pressAndHold, false)
+ tryCompare(table, "_pressAndHold", true, 5000)
+ table.clearTestData()
+
table.destroy()
}
@@ -580,6 +586,7 @@ TestCase {
compare(table._clicked, false)
compare(table._released, false)
compare(table._doubleClicked, false)
+ compare(table._pressAndHold, false)
mousePress(table, 25, 10, Qt.RightButton)
compare(table._pressed, true)
@@ -597,6 +604,11 @@ TestCase {
compare(table._doubleClicked, true)
table.clearTestData()
+ mousePress(table, 25 , 10, Qt.RightButton)
+ compare(table._pressAndHold, false)
+ tryCompare(table, "_pressAndHold", true, 5000)
+ table.clearTestData()
+
table.destroy()
}