Never leave the desktop without a wallpaper after a theme intro (#15000)

A theme switch that plays an intro gave the shell the new still only when
the intro failed. The shell kept the old theme's path, which the theme swap
deletes, and loaded it again when OWE handed the desktop back, leaving it
empty. The new still is now handed over either way.

The shell also re-reads the background link whenever OWE hands the desktop
back or a wallpaper fails to load, falling back to the theme's first
background when the link itself is broken.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier HanssonandClaude Opus 5.5 authored and GitHub committed 2026-10-11 21:42:00 +09:00
1 parent 754d2d04b3
commit 1ac31e55ae
5 files changed
+70 -8

No files matched your search

+3
View File
@@ -18,6 +18,8 @@ Item {
property size decodeSize: Qt.size(0, 0)
readonly property var current: imageLoader.item
readonly property bool ready: current ? current.ready : false
// The file behind path could not be loaded, as when it was deleted.
readonly property bool failed: current ? current.failed : false
readonly property bool video: Util.isVideoPath(path)
// Cache-bust images selected in a running lock session, so a theme switch
// that replaces the file behind an unchanged path shows the new pixels.
@@ -35,6 +37,7 @@ Item {
Image {
readonly property bool ready: status === Image.Ready
readonly property bool failed: status === Image.Error
source: !root.constrainDecode || root.decodeSize.width > 0 ? root.imageUrl : ""
fillMode: Image.PreserveAspectCrop
asynchronous: true