Ignore stale image picker scans

This commit is contained in:
David Heinemeier Hansson
2026-05-20 15:14:54 +02:00
parent c12f0b5399
commit a69b64e1dd
+28 -5
View File
@@ -284,12 +284,25 @@ Item {
selectedIndex = 0 selectedIndex = 0
imagesLoaded = false imagesLoaded = false
opened = false opened = false
loadImagesProc.requestSerial = requestSerial startImageScan(requestSerial, imageDirs)
loadImagesProc.running = true
} }
property var imageArray: [] property var imageArray: []
function startImageScan(serial, dirs) {
if (loadImagesProc.running) {
loadImagesProc.queuedSerial = serial
loadImagesProc.queuedDirs = dirs
return
}
loadImagesProc.activeSerial = serial
loadImagesProc.queuedSerial = 0
loadImagesProc.queuedDirs = ""
loadImagesProc.command = [root.scriptPath("image-picker-list.sh"), dirs]
loadImagesProc.running = true
}
function indexForSelectedImage(images) { function indexForSelectedImage(images) {
for (var i = 0; i < images.length; i++) { for (var i = 0; i < images.length; i++) {
if (images[i].filePath === selectedImage) if (images[i].filePath === selectedImage)
@@ -305,15 +318,25 @@ Item {
Process { Process {
id: loadImagesProc id: loadImagesProc
property int requestSerial: 0 property int activeSerial: 0
command: [root.scriptPath("image-picker-list.sh"), root.imageDirs] property int queuedSerial: 0
property string queuedDirs: ""
stdout: StdioCollector { stdout: StdioCollector {
waitForEnd: true waitForEnd: true
onStreamFinished: { onStreamFinished: {
if (loadImagesProc.requestSerial === root.requestSerial) if (loadImagesProc.activeSerial === root.requestSerial)
root.loadRows(String(text || ""), true) root.loadRows(String(text || ""), true)
} }
} }
onExited: {
var serial = queuedSerial
var dirs = queuedDirs
activeSerial = 0
queuedSerial = 0
queuedDirs = ""
if (serial > 0 && serial === root.requestSerial)
root.startImageScan(serial, dirs)
}
} }
// Lifecycle hooks invoked by omarchy-shell summon/hide. shell.summon(id, // Lifecycle hooks invoked by omarchy-shell summon/hide. shell.summon(id,