summaryrefslogtreecommitdiff
path: root/widgets
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-07-22 22:28:10 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-07-22 22:28:10 +1000
commit89c7739fdbcea2e8918b30ca236d7e09beee1bc3 (patch)
treef8dcca2fc422795d0032102f672e720d01031016 /widgets
parentinternal: fix typo (diff)
downloadcaelestia-shell-89c7739fdbcea2e8918b30ca236d7e09beee1bc3.tar.gz
caelestia-shell-89c7739fdbcea2e8918b30ca236d7e09beee1bc3.tar.bz2
caelestia-shell-89c7739fdbcea2e8918b30ca236d7e09beee1bc3.zip
filedialog: cache thumbnails
Much faster loading
Diffstat (limited to 'widgets')
-rw-r--r--widgets/CachingIconImage.qml31
-rw-r--r--widgets/CachingImage.qml2
-rw-r--r--widgets/filedialog/FolderContents.qml3
3 files changed, 32 insertions, 4 deletions
diff --git a/widgets/CachingIconImage.qml b/widgets/CachingIconImage.qml
new file mode 100644
index 0000000..522a947
--- /dev/null
+++ b/widgets/CachingIconImage.qml
@@ -0,0 +1,31 @@
+import QtQuick
+
+Item {
+ property alias asynchronous: image.asynchronous
+ property alias status: image.status
+ property alias mipmap: image.mipmap
+ property alias backer: image
+
+ property real implicitSize
+ readonly property real actualSize: Math.min(width, height)
+
+ property url source
+
+ onSourceChanged: {
+ if (source?.toString().startsWith("image://icon/"))
+ // Directly skip the path prop and treat like a normal Image component
+ image.source = source;
+ else if (source)
+ image.path = source;
+ }
+
+ implicitWidth: implicitSize
+ implicitHeight: implicitSize
+
+ CachingImage {
+ id: image
+
+ anchors.fill: parent
+ fillMode: Image.PreserveAspectFit
+ }
+}
diff --git a/widgets/CachingImage.qml b/widgets/CachingImage.qml
index c58ff51..1d42238 100644
--- a/widgets/CachingImage.qml
+++ b/widgets/CachingImage.qml
@@ -1,4 +1,3 @@
-import qs.services
import qs.utils
import Quickshell.Io
import QtQuick
@@ -11,7 +10,6 @@ Image {
readonly property string cachePath: `${Paths.stringify(Paths.imagecache)}/${hash}@${width}x${height}.png`
asynchronous: true
- cache: false
fillMode: Image.PreserveAspectCrop
sourceSize.width: width
sourceSize.height: height
diff --git a/widgets/filedialog/FolderContents.qml b/widgets/filedialog/FolderContents.qml
index 1881288..4a24ef5 100644
--- a/widgets/filedialog/FolderContents.qml
+++ b/widgets/filedialog/FolderContents.qml
@@ -6,7 +6,6 @@ import qs.config
import qs.utils
import Quickshell
import Quickshell.Io
-import Quickshell.Widgets
import QtQuick
import QtQuick.Layouts
import QtQuick.Effects
@@ -140,7 +139,7 @@ Item {
}
}
- IconImage {
+ CachingIconImage {
id: icon
anchors.horizontalCenter: parent.horizontalCenter