Wallpaper: fix bug where folder would not be rescanned if they did not exists when noctalia started.

This commit is contained in:
ItsLemmy
2025-10-29 21:25:39 -04:00
parent 6fbbf38ffa
commit f75a056550
2 changed files with 21 additions and 7 deletions
-3
View File
@@ -292,9 +292,6 @@ NPanel {
}
wallpapersList = WallpaperService.getWallpapersList(targetScreen.name)
Logger.i("WallpaperPanel", "Got", wallpapersList.length, "wallpapers for screen", targetScreen.name)
if (wallpapersList.length > 0) {
Logger.d("WallpaperPanel", "First 5 wallpapers:", wallpapersList.slice(0, 5))
}
// Pre-compute basenames once for better performance
wallpapersWithNames = wallpapersList.map(function (p) {
+21 -4
View File
@@ -372,12 +372,20 @@ Singleton {
}
} else {
// Use FolderListModel (non-recursive)
// Force refresh by toggling each scanner's currentDirectory
for (var i = 0; i < wallpaperScanners.count; i++) {
var scanner = wallpaperScanners.objectAt(i)
if (scanner) {
var currentFolder = scanner.folder
scanner.folder = ""
scanner.folder = currentFolder
// Capture scanner in closure
(function(s) {
var directory = root.getMonitorDirectory(s.screenName)
// Trigger a change by setting to /tmp (always exists) then back to the actual directory
// Note: This causes harmless Qt warnings (QTBUG-52262) but is necessary to force FolderListModel to re-scan
s.currentDirectory = "/tmp"
Qt.callLater(function() {
s.currentDirectory = directory
})
})(scanner)
}
}
}
@@ -395,6 +403,15 @@ Singleton {
return
}
// Cancel any existing scan for this screen
if (recursiveProcesses[screenName]) {
Logger.d("Wallpaper", "Cancelling existing scan for", screenName)
recursiveProcesses[screenName].running = false
recursiveProcesses[screenName].destroy()
delete recursiveProcesses[screenName]
scanningCount--
}
scanningCount++
Logger.i("Wallpaper", "Starting recursive scan for", screenName, "in", directory)
@@ -434,7 +451,7 @@ Singleton {
Logger.i("Wallpaper", "Recursive scan completed for", screenName, "found", files.length, "files")
wallpaperListChanged(screenName, files.length)
} else {
Logger.e("Wallpaper", "Recursive scan failed for", screenName, "exit code:", exitCode, "stderr:", processObject.stderr.text)
Logger.w("Wallpaper", "Recursive scan failed for", screenName, "exit code:", exitCode, "(directory might not exist)")
wallpaperLists[screenName] = []
wallpaperListChanged(screenName, 0)
}