fix(qt): restore window lifecycle and improve grid artwork

Restore tray-aware close and quit confirmation, circular label covers, and missing label artist portraits. Publish artwork progressively, preload two grid rows, and skip redundant motion reports while preserving data refreshes.

Include regression tests and isolated artwork benchmarks. Verified Linux build, QML checks, and scrolling smoke tests.

cx
This commit is contained in:
vicrodh committed 2026-09-09 21:58:25 -06:00
1 parent 5fab503eb7
commit 2fc03d325d
61 files changed
+1591 -151

No files matched your search

@@ -548,6 +548,7 @@ Column {
}
SettingRow { kioskHost: root.kioskHost;
label: QbzSession.tr("Show track in window title", QbzSession.trRev)
visible: !QbzShell.isMacos || QbzShell.systemTitleBar
QbzToggle { kioskHost: root.kioskHost;
checked: root.doc.windowTitleShow === true
onToggled: function (v) { QbzBridge.settingsBool("window-title-show", v) }
@@ -604,30 +605,12 @@ Column {
// Absent while there is no tray icon to close to (owner
// 2026-08-21). The value still round-trips through the store, so
// turning the tray back on restores the answer the user gave.
visible: root.doc.trayEnable === true
visible: root.doc.trayEnable === true && root.doc.isMacos !== true
QbzToggle { kioskHost: root.kioskHost;
checked: root.doc.trayCloseToTray === true
onToggled: function (v) { QbzBridge.settingsBool("tray-close-to-tray", v) }
}
}
// macOS only: switch the activation policy to .accessory while closed to
// the menu bar (no Dock icon). Off = Spotify-style, keep the Dock icon.
// `visible` is inherited Item.visible and the parent is a Column, which
// skips invisible children — so on Linux this leaves no gap at all. The
// enable condition is DOUBLED on the row and on the toggle because
// SettingRow's `rowEnabled` only dims its own label column
// (controls/SettingRow.qml:26); it does not reach the control.
SettingRow { kioskHost: root.kioskHost;
visible: root.doc.isMacos === true
label: QbzSession.tr("Hide Dock icon when closed to menu bar", QbzSession.trRev)
description: QbzSession.tr("Run as a menu-bar-only app while the window is closed. Off keeps the Dock icon (like Spotify)", QbzSession.trRev)
rowEnabled: root.doc.trayEnable === true && root.doc.trayCloseToTray === true
QbzToggle { kioskHost: root.kioskHost;
enabled: root.doc.trayEnable === true && root.doc.trayCloseToTray === true
checked: root.doc.trayMacHideDock === true
onToggled: function (v) { QbzBridge.settingsBool("tray-mac-hide-dock", v) }
}
}
SettingRow { kioskHost: root.kioskHost;
// Absent while the tray is off — there is no icon to give a
// variant to (owner 2026-08-21).