diff options
| -rw-r--r-- | src/controls/TableView.qml | 19 | ||||
| -rw-r--r-- | tests/auto/controls/data/tableview/table_delegate3.qml | 3 | ||||
| -rw-r--r-- | tests/auto/controls/data/tableview/table_mousearea.qml | 3 | ||||
| -rw-r--r-- | tests/auto/controls/data/tst_tableview.qml | 12 |
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() } |
