branch: externals/listen
commit 278c97695a68c5c164c3b82186007f51a847bccb
Author: Adam Porter <[email protected]>
Commit: Adam Porter <[email protected]>
Change: (listen-queue) Update current track when changed
---
listen-queue.el | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
diff --git a/listen-queue.el b/listen-queue.el
index 496bf7f2b1..579e5f7952 100644
--- a/listen-queue.el
+++ b/listen-queue.el
@@ -109,13 +109,24 @@ intended to be set from the `listen-menu'."
(make-vtable
:columns
(list (list :name "▶" :primary 'descend
- :getter (lambda (track _table)
- ;; We compare filenames in case the queue's
files
- ;; have been refreshed from disk, in which
case
- ;; the track objects would no longer be
`eq'.
- (if (equal (listen-track-filename track)
- (listen-track-filename
(listen-queue-current queue)))
- "▶" " ")))
+ :getter
+ (lambda (track _table)
+ ;; We compare filenames in case the queue's files
+ ;; have been refreshed from disk, in which case
+ ;; the track objects would no longer be `eq'.
+ (if (equal (listen-track-filename track)
+ (listen-track-filename
(listen-queue-current queue)))
+ (progn
+ (unless (eq (listen-queue-current
listen-queue) track)
+ ;; HACK: Update current track in queue. I
don't know a
+ ;; more optimal place to do this.
+ (setf (seq-elt (listen-queue-tracks
listen-queue)
+ (seq-position
(listen-queue-tracks listen-queue)
+
(listen-queue-current listen-queue)))
+ track
+ (listen-queue-current listen-queue)
track))
+ "▶")
+ " ")))
(list :name "#" :primary 'descend
:getter (lambda (track _table)
(cl-position track (listen-queue-tracks
queue))))