]> uap-core.de Git - rssreader.git/commitdiff
keep sidebar selection when moving feeds/groups
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 20 Mar 2026 17:26:36 +0000 (18:26 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 20 Mar 2026 17:26:36 +0000 (18:26 +0100)
rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt

index 8c8fd099d9767d50a27138e12ee8b9c539531616..0e479a6fb241d8de50ba107ee6b5f94df588fe4e 100644 (file)
@@ -38,7 +38,7 @@ class FeedSourceList : Document() {
         feeds.update()
     }
 
-    fun swapFeedCollections(group: Int, feed1: Int, feed2: Int) {
+    fun swapFeedCollections(group: Int, feed1: Int, feed2: Int, select: Int = -1) {
         if(group < 0 || group >= groups.size) {
             return
         }
@@ -56,13 +56,16 @@ class FeedSourceList : Document() {
         gr.feeds[feed1] = f2
         gr.feeds[feed2] = f1
         gr.feeds.update()
+        if(select >= 0) {
+            gr.feeds.selectedIndex = select
+        }
 
         GlobalScope.launch(Dispatchers.IO) {
             Database.swapFeedCollectionPos(f1, f2)
         }
     }
 
-    fun swapFeedGroups(group1: Int, group2: Int) {
+    fun swapFeedGroups(group1: Int, group2: Int, select: Int = -1) {
         if(group1 < 0 || group1 >= groups.size) {
             return
         }
@@ -77,6 +80,9 @@ class FeedSourceList : Document() {
         groups[group1] = g2
         groups[group2] = g1
         feeds.update()
+        if(select >= 0) {
+            feeds.selectedIndex = select
+        }
 
         GlobalScope.launch(Dispatchers.IO) {
             Database.swapFeedGroupPos(g1, g2)
index 65193138f9ccc132f8267ace87fdb057cd48def4..fb9de0e0f3c5a15b6592a0ef3dce7545b8479bd3 100644 (file)
@@ -84,17 +84,17 @@ class MainWindow() {
         menuItem("Move Up") { event ->
             val evt = event.subListEventData
             if(evt.rowIndex >= 0) {
-                sourceList.swapFeedCollections(evt.sublistIndex, evt.rowIndex, evt.rowIndex-1)
+                sourceList.swapFeedCollections(evt.sublistIndex, evt.rowIndex, evt.rowIndex-1, evt.rowIndex)
             } else {
-                sourceList.swapFeedGroups(evt.sublistIndex, evt.sublistIndex-1)
+                sourceList.swapFeedGroups(evt.sublistIndex, evt.sublistIndex-1, evt.sublistIndex-1)
             }
         }
         menuItem("Move Down") { event ->
             val evt = event.subListEventData
             if(evt.rowIndex >= 0) {
-                sourceList.swapFeedCollections(evt.sublistIndex, evt.rowIndex, evt.rowIndex+1)
+                sourceList.swapFeedCollections(evt.sublistIndex, evt.rowIndex, evt.rowIndex+1, evt.rowIndex+2)
             } else {
-                sourceList.swapFeedGroups(evt.sublistIndex, evt.sublistIndex+1)
+                sourceList.swapFeedGroups(evt.sublistIndex, evt.sublistIndex+1, evt.sublistIndex+1)
             }
         }
         menuItem("Delete") { event ->