Compare commits

..

No commits in common. "7e359fb7308c08dec9365871a7029b1eee620e33" and "90ec41fd05265b794a0d38e02f3a49b8f84a0f84" have entirely different histories.

View file

@ -13,21 +13,6 @@ M.BarSection {
readonly property MprisPlayer player: Mpris.players.values[0] ?? null readonly property MprisPlayer player: Mpris.players.values[0] ?? null
readonly property bool playing: player?.playbackState === MprisPlaybackState.Playing readonly property bool playing: player?.playbackState === MprisPlaybackState.Playing
property string _cachedArt: ""
property string _artTrack: ""
// Cache art URL at root level so it's captured even when panel is hidden
readonly property string _artUrl: player?.trackArtUrl ?? ""
readonly property string _currentTrack: player?.trackTitle ?? ""
on_ArtUrlChanged: if (_artUrl) _cachedArt = _artUrl
on_CurrentTrackChanged: if (_currentTrack !== _artTrack) { _artTrack = _currentTrack; _cachedArt = _artUrl || "" }
// Preload art while panel is hidden ensures QML image cache has the pixels
Image {
visible: false
source: root._cachedArt
asynchronous: true
}
required property var bar required property var bar
@ -155,7 +140,7 @@ M.BarSection {
// Album art // Album art
Item { Item {
width: parent.width width: parent.width
height: _artImg._hasArt ? 140 : 60 height: _artImg.status === Image.Ready ? 140 : 60
clip: true clip: true
Rectangle { Rectangle {
@ -167,16 +152,16 @@ M.BarSection {
id: _artImg id: _artImg
anchors.fill: parent anchors.fill: parent
fillMode: Image.PreserveAspectCrop fillMode: Image.PreserveAspectCrop
visible: _hasArt visible: status === Image.Ready
asynchronous: true asynchronous: true
source: root._cachedArt
property bool _hasArt: false property string _lastGoodSource: ""
onStatusChanged: if (status === Image.Ready) _hasArt = true property string _lastTrack: ""
Connections { readonly property string _artUrl: root.player?.trackArtUrl ?? ""
target: root readonly property string _track: root.player?.trackTitle ?? ""
function on_CachedArtChanged() { if (!root._cachedArt) _artImg._hasArt = false } on_ArtUrlChanged: if (_artUrl) _lastGoodSource = _artUrl
} on_TrackChanged: if (_track !== _lastTrack) { _lastTrack = _track; _lastGoodSource = _artUrl || "" }
source: _lastGoodSource
} }
Rectangle { Rectangle {