[Android] Fix audio player jump when moving items

Nicolas Pomepuy git at videolan.org
Fri Mar 13 09:28:45 UTC 2026


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Fri Mar 13 08:13:00 2026 +0100| [f995322a0728e3b2743ebaa748f32d378976ca30] | committer: Duncan McNamara

Fix audio player jump when moving items

Fixes #3311

> https://code.videolan.org/videolan/vlc-android/commit/f995322a0728e3b2743ebaa748f32d378976ca30
---

 .../vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt |  4 ++++
 .../src/org/videolan/vlc/viewmodels/PlaylistModel.kt          | 11 +++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
index edd7322e53..7c89eb6fec 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
@@ -707,6 +707,10 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
     private fun shouldHidePlayProgress() = abRepeatAddMarker.visibility != View.GONE || areBookmarksVisible() || playlistModel.medias?.size ?: 0 < 2
 
     override fun onSelectionSet(position: Int) {
+        if (playlistModel.lastActionWasEdit) {
+            playlistModel.lastActionWasEdit = false
+            return
+        }
         binding.songsList.scrollToPosition(position)
     }
 
diff --git a/application/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt b/application/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt
index 2ea1cc74f0..03b7c387a4 100644
--- a/application/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt
+++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt
@@ -68,6 +68,7 @@ class PlaylistModel : ViewModel(), PlaybackService.Callback by EmptyPBSCallback
     val connected : Boolean
         get() = service !== null
     var lastQuery: CharSequence? = null
+    var lastActionWasEdit = false
 
     private val filter by lazy(LazyThreadSafetyMode.NONE) { PlaylistFilterDelegate(dataset) }
 
@@ -148,9 +149,15 @@ class PlaylistModel : ViewModel(), PlaybackService.Callback by EmptyPBSCallback
         originalDataset!!.indexOf(dataset.get(position))
     } else position
 
-    fun remove(position: Int) = service?.remove(getOriginalPosition(position))
+    fun remove(position: Int) {
+        lastActionWasEdit = true
+        service?.remove(getOriginalPosition(position))
+    }
 
-    fun move(from: Int, to: Int) = service?.moveItem(from, to)
+    fun move(from: Int, to: Int) {
+        lastActionWasEdit = true
+        service?.moveItem(from, to)
+    }
 
     @MainThread
     fun filter(query: CharSequence?) {



More information about the Android mailing list