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
imagesLoaded = false
opened = false
loadImagesProc.requestSerial = requestSerial
loadImagesProc.running = true
startImageScan(requestSerial, imageDirs)
}
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) {
for (var i = 0; i < images.length; i++) {
if (images[i].filePath === selectedImage)
@@ -305,15 +318,25 @@ Item {
Process {
id: loadImagesProc
property int requestSerial: 0
command: [root.scriptPath("image-picker-list.sh"), root.imageDirs]
property int activeSerial: 0
property int queuedSerial: 0
property string queuedDirs: ""
stdout: StdioCollector {
waitForEnd: true
onStreamFinished: {
if (loadImagesProc.requestSerial === root.requestSerial)
if (loadImagesProc.activeSerial === root.requestSerial)
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,