about summary refs log tree commit homepage
path: root/lib/dtas/tracklist.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dtas/tracklist.rb')
-rw-r--r--lib/dtas/tracklist.rb12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/dtas/tracklist.rb b/lib/dtas/tracklist.rb
index 6856648..325db20 100644
--- a/lib/dtas/tracklist.rb
+++ b/lib/dtas/tracklist.rb
@@ -101,11 +101,15 @@ class DTAS::Tracklist # :nodoc:
 
   def remove_track(track_id)
     by_track_id = _track_id_map
-    if idx = by_track_id.delete(track_id)
-      @list[idx] = nil
-      @list.compact!
-      # TODO: what do we do with @pos (and the currently-playing track)
+    idx = by_track_id.delete(track_id) or return false
+    @list[idx] = nil
+    @list.compact!
+    len = @list.size
+    if @pos >= len
+      @pos = len == 0 ? TL_DEFAULTS["pos"] : len
     end
+    @goto_pos = @goto_pos = nil # TODO: reposition?
+    true
   end
 
   def go_to(track_id, offset_hhmmss = nil)