From c491d652abf81970ca345958e954fc9e278c0a5c Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 5 Feb 2024 17:09:35 +0200 Subject: [PATCH] QmlDesigner: Prioritize hiding asset_imports content in UrlChooser MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the same file is available under asset_imports and outside it, prefer hiding the copy under asset_imports in UrlChooser when duplicate hiding is enabled. Fixes: QDS-11908 Change-Id: I06ac298e1ea45f6a94c66eb20cc4c0d4655103f4 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Mahmoud Badri Reviewed-by: Henning Gründl --- .../imports/HelperWidgets/UrlChooser.qml | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml index 6c0e334dec6..5d65bb09fc4 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml @@ -425,7 +425,7 @@ Row { // QtDS very slow. This will happen when selecting different items in the scene. comboBox.model = {} - let nameSet = new Set; + let nameMap = new Map; if (root.defaultItems !== undefined) { for (var i = 0; i < root.defaultItems.length; ++i) { @@ -437,22 +437,32 @@ Row { name: root.defaultItems[i], group: 0 }) - nameSet.add(root.defaultItems[i]) + nameMap.set(root.defaultItems[i], i) } } const myModel = fileModel.model for (var j = 0; j < myModel.length; ++j) { let item = myModel[j] - - if (!root.hideDuplicates || !nameSet.has(item.fileName)) { + if (root.hideDuplicates && nameMap.has(item.fileName)) { + // Prefer hiding imported asset files rather than other project files + let listIndex = nameMap.get(item.fileName) + if (comboBox.listModel.get(listIndex).absoluteFilePath.includes("/asset_imports/")) { + comboBox.listModel.set(listIndex, { + absoluteFilePath: item.absoluteFilePath, + relativeFilePath: item.relativeFilePath, + name: item.fileName, + group: 1 + }) + } + } else { comboBox.listModel.append({ absoluteFilePath: item.absoluteFilePath, relativeFilePath: item.relativeFilePath, name: item.fileName, group: 1 }) - nameSet.add(item.fileName) + nameMap.set(item.fileName, comboBox.listModel.count - 1) } }