From 6386bfeeb4f1553f90743606a48e5c724f05aff5 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 21 Sep 2023 16:13:43 +0300 Subject: QmlDesigner: Preserve size of small asset view images Small images get blurry if scaled up, so just show the original image in the thumbnail if it is smaller than the thumbnail. Fixes: QDS-10671 Change-Id: I76b5b1c5b316fb66e7df71602383b894dd7bc635 Reviewed-by: Mahmoud Badri (cherry picked from commit 15051d112e9b8ecbfbb9e65526a8699959d2da61) Reviewed-by: Thomas Hartmann Reviewed-by: Qt CI Patch Build Bot --- .../qmldesigner/assetsLibraryQmlSources/AssetDelegate.qml | 2 +- .../components/assetslibrary/assetslibraryiconprovider.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetDelegate.qml b/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetDelegate.qml index 6a511c7252..edaf038ac8 100644 --- a/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetDelegate.qml +++ b/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetDelegate.qml @@ -327,7 +327,7 @@ TreeViewDelegate { sourceSize.width: 48 sourceSize.height: 48 asynchronous: true - fillMode: Image.PreserveAspectFit + fillMode: Image.Pad source: thumbnailImage.__computeSource() function __computeSource() { diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp index 838af4d63d..dc5a1c9741 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp @@ -56,8 +56,15 @@ Thumbnail AssetsLibraryIconProvider::createThumbnail(const QString &id, const QS originalSize = KtxImage(id).dimensions(); } - if (requestedSize.isValid()) - pixmap = pixmap.scaled(requestedSize, Qt::KeepAspectRatio); + if (requestedSize.isValid()) { + double ratio = requestedSize.width() / 48.; + if (ratio * pixmap.size().width() > requestedSize.width() + || ratio * pixmap.size().height() > requestedSize.height()) { + pixmap = pixmap.scaled(requestedSize, Qt::KeepAspectRatio); + } else if (!qFuzzyCompare(ratio, 1.)) { + pixmap = pixmap.scaled(pixmap.size() * ratio, Qt::KeepAspectRatio); + } + } return Thumbnail{pixmap, originalSize, assetType, fileSize}; } -- cgit v1.2.3