about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/dtas/tracklist.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/dtas/tracklist.rb b/lib/dtas/tracklist.rb
index 325db20..b6f02c3 100644
--- a/lib/dtas/tracklist.rb
+++ b/lib/dtas/tracklist.rb
@@ -91,10 +91,18 @@ class DTAS::Tracklist # :nodoc:
       idx = by_track_id[after_track_id] or
         raise ArgumentError, "after_track_id invalid"
       @list[idx, 1] = [ @list[idx], track ]
-      @pos = idx + 1 if set_as_current
+      if set_as_current
+        @pos = idx + 1
+      else
+        @pos += 1 if @pos >= idx
+      end
     else # nil = first_track
       @list.unshift(track)
-      @pos = 0 if set_as_current
+      if set_as_current
+        @pos = 0
+      else
+        @pos += 1 if @pos >= 0
+      end
     end
     track.object_id
   end