fix(qt): "Play all next" enqueues the artist instead of replacing the queue
The artist ⋯ menu offers "Play all next", "Add all to queue" and "Shuffle all". The first was wired to `playArtistTop(false)` — which the bridge's own doc calls "Play all": it REPLACES the queue and starts playing. There is no plain "Play all" row in that menu, so there was no way to get the intended behaviour, and asking to queue an artist next wiped whatever was queued. The invokable takes a mode now and both rows route through the shared insertion funnel: "next" inserts at the cursor, "queue" appends. That is what the reference does (`enqueue_artist_top_selected(.., next: true)`) and what `playback_qt::enqueue_artist_top_mode` was written for — it had no caller at all, which is how the miswiring survived. cc
This commit is contained in:
3 files changed
+28
-11
No files matched your search
@@ -3418,8 +3418,14 @@ Rectangle {
|
||||
topMenu.close()
|
||||
var a = modelData.action
|
||||
if (a === "shuffle-all") QbzPlayer.playArtistTop(true)
|
||||
else if (a === "next-all") QbzPlayer.playArtistTop(false)
|
||||
else if (a === "queue-all") QbzPlayer.enqueueArtistTop()
|
||||
// "Play all next" INSERTS at the cursor; it does
|
||||
// not replay the artist. It used to call
|
||||
// playArtistTop(false) — "Play all" — so the row
|
||||
// labelled "next" wiped the queue and started
|
||||
// over (ArtistPageView's twin in Slint enqueues,
|
||||
// main.rs:15301).
|
||||
else if (a === "next-all") QbzPlayer.enqueueArtistTop("next")
|
||||
else if (a === "queue-all") QbzPlayer.enqueueArtistTop("queue")
|
||||
else if (a === "playlist-all") {
|
||||
// ArtistPageView.slint:797-802
|
||||
// `top-tracks-menu-action("playlist-all")` —
|
||||
|
||||
Reference in new issue
Block a user