From 8e2b06a8e5d59935fadb0ebd2b79a7fbbbb46e56 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 10 Mar 2016 18:32:18 -0800 Subject: [PATCH 1/3] use an explicit selection model for treeview --- interface/resources/qml/AssetServer.qml | 18 ++++++++++-------- interface/resources/qml/controls-uit/Tree.qml | 4 ++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/interface/resources/qml/AssetServer.qml b/interface/resources/qml/AssetServer.qml index e5e3d95a81..1a6247ced9 100644 --- a/interface/resources/qml/AssetServer.qml +++ b/interface/resources/qml/AssetServer.qml @@ -138,7 +138,7 @@ Window { function addToWorld(url) { if (!url) { - url = assetProxyModel.data(treeView.currentIndex, 0x103); + url = assetProxyModel.data(treeView.selection.currentIndex, 0x103); } if (!url || !canAddToWorld(url)) { @@ -153,10 +153,10 @@ Window { function copyURLToClipboard(index) { if (!index) { - index = treeView.currentIndex; + index = treeView.selection.currentIndex; } - var url = assetProxyModel.data(treeView.currentIndex, 0x103); + var url = assetProxyModel.data(treeView.selection.currentIndex, 0x103); if (!url) { return; } @@ -165,9 +165,11 @@ Window { function renameFile(index) { if (!index) { - index = treeView.currentIndex; + index = treeView.selection.currentIndex; } + console.log("THE CURRENT INDEX IS " + treeView.selection.currentIndex); var path = assetProxyModel.data(index, 0x100); + console.log("THE PATH IS " + path); if (!path) { return; } @@ -194,14 +196,14 @@ Window { } function deleteFile(index) { if (!index) { - index = treeView.currentIndex; + index = treeView.selection.currentIndex; } var path = assetProxyModel.data(index, 0x100); if (!path) { return; } - var isFolder = assetProxyModel.data(treeView.currentIndex, 0x101); + var isFolder = assetProxyModel.data(treeView.selection.currentIndex, 0x101); var typeString = isFolder ? 'folder' : 'file'; var object = desktop.messageBox({ @@ -239,7 +241,7 @@ Window { var fileUrl = fileUrlTextField.text var shouldAddToWorld = addToWorldCheckBox.checked - var path = assetProxyModel.data(treeView.currentIndex, 0x100); + var path = assetProxyModel.data(treeView.selection.currentIndex, 0x100); var directory = path ? path.slice(0, path.lastIndexOf('/') + 1) : "/"; var filename = fileUrl.slice(fileUrl.lastIndexOf('/') + 1); @@ -302,7 +304,7 @@ Window { height: 26 width: 120 - enabled: canAddToWorld(assetProxyModel.data(treeView.currentIndex, 0x100)) + enabled: canAddToWorld(assetProxyModel.data(treeView.selection.currentIndex, 0x100)) onClicked: root.addToWorld() } diff --git a/interface/resources/qml/controls-uit/Tree.qml b/interface/resources/qml/controls-uit/Tree.qml index 18741d6420..a2572a2f5c 100644 --- a/interface/resources/qml/controls-uit/Tree.qml +++ b/interface/resources/qml/controls-uit/Tree.qml @@ -8,6 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +import QtQml.Models 2.2 import QtQuick 2.5 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 @@ -22,6 +23,9 @@ TreeView { readonly property bool isLightColorScheme: colorScheme == hifi.colorSchemes.light model: treeModel + selection: ItemSelectionModel { + model: treeModel + } TableViewColumn { role: "display"; From 7675c83f920ecb0505e7ece26255ff56261b9a19 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 10 Mar 2016 18:34:28 -0800 Subject: [PATCH 2/3] clear selection on reload --- interface/resources/qml/AssetServer.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/resources/qml/AssetServer.qml b/interface/resources/qml/AssetServer.qml index 1a6247ced9..db2f6dd83c 100644 --- a/interface/resources/qml/AssetServer.qml +++ b/interface/resources/qml/AssetServer.qml @@ -127,6 +127,7 @@ Window { function reload() { Assets.mappingModel.refresh(); + treeView.selection.clear(); } function handleGetMappingsError(errorCode) { From 7ccba8b40636425b5c0cc009476aed493eef872d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 10 Mar 2016 18:36:12 -0800 Subject: [PATCH 3/3] remove debug for selected index crash --- interface/resources/qml/AssetServer.qml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/resources/qml/AssetServer.qml b/interface/resources/qml/AssetServer.qml index db2f6dd83c..c5ebb04819 100644 --- a/interface/resources/qml/AssetServer.qml +++ b/interface/resources/qml/AssetServer.qml @@ -168,9 +168,8 @@ Window { if (!index) { index = treeView.selection.currentIndex; } - console.log("THE CURRENT INDEX IS " + treeView.selection.currentIndex); + var path = assetProxyModel.data(index, 0x100); - console.log("THE PATH IS " + path); if (!path) { return; }