diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-02-16 07:02:56 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-02-16 07:02:56 +0100 |
commit | 1d61e0052b6a94546f264c3a37a19db09003d7c8 (patch) | |
tree | 9311e07960d5b08e9948b615f992c36e7bce1cf9 /src/controls/TreeView.qml | |
parent | 571a44a4dde8f047773f4e91a4a6941cb4cdf212 (diff) | |
parent | 67041bbc667a10ae14a15ed8755b2b1bbf91b686 (diff) | |
download | qtquickcontrols-1d61e0052b6a94546f264c3a37a19db09003d7c8.tar.gz |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
.qmake.conf
src/dialogs/qquickabstractfiledialog.cpp
src/dialogs/qquickfiledialog.cpp
Change-Id: I60aab7c7e819f82f82fc30f473b36a7a57d9a91a
Diffstat (limited to 'src/controls/TreeView.qml')
-rw-r--r-- | src/controls/TreeView.qml | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/controls/TreeView.qml b/src/controls/TreeView.qml index 6be217c5..49b88486 100644 --- a/src/controls/TreeView.qml +++ b/src/controls/TreeView.qml @@ -124,6 +124,7 @@ BasicTableView { property var clickedIndex: undefined property var pressedIndex: undefined + property bool selectOnRelease: false property int pressedColumn: -1 readonly property alias currentRow: root.__currentRow readonly property alias currentIndex: root.currentIndex @@ -240,22 +241,37 @@ BasicTableView { var pressedRow = __listView.indexAt(0, mouseY + __listView.contentY) pressedIndex = modelAdaptor.mapRowToModelIndex(pressedRow) pressedColumn = __listView.columnAt(mouseX) + selectOnRelease = false __listView.forceActiveFocus() - if (pressedRow > -1 && !Settings.hasTouchScreen - && !branchDecorationContains(mouse.x, mouse.y)) { - __listView.currentIndex = pressedRow - if (!clickedIndex) - clickedIndex = pressedIndex - mouseSelect(pressedIndex, mouse.modifiers, false) - if (!mouse.modifiers) - clickedIndex = pressedIndex + if (pressedRow === -1 + || Settings.hasTouchScreen + || branchDecorationContains(mouse.x, mouse.y)) { + return + } + if (selectionMode === SelectionMode.ExtendedSelection + && selection.isSelected(pressedIndex)) { + selectOnRelease = true + return } + __listView.currentIndex = pressedRow + if (!clickedIndex) + clickedIndex = pressedIndex + mouseSelect(pressedIndex, mouse.modifiers, false) + if (!mouse.modifiers) + clickedIndex = pressedIndex } onReleased: { + if (selectOnRelease) { + var releasedRow = __listView.indexAt(0, mouseY + __listView.contentY) + var releasedIndex = modelAdaptor.mapRowToModelIndex(releasedRow) + if (releasedRow >= 0 && releasedIndex === pressedIndex) + mouseSelect(pressedIndex, mouse.modifiers, false) + } pressedIndex = undefined pressedColumn = -1 autoScroll = 0 + selectOnRelease = false } onPositionChanged: { @@ -286,12 +302,14 @@ BasicTableView { onExited: { pressedIndex = undefined pressedColumn = -1 + selectOnRelease = false } onCanceled: { pressedIndex = undefined pressedColumn = -1 autoScroll = 0 + selectOnRelease = false } onClicked: { |