From b786b5aa2021904e807f006c509c47be49f5baa1 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 30 Oct 2023 15:07:26 +0100 Subject: [PATCH] fix multiple items moving up/down --- src/librssguard/gui/feedsview.cpp | 33 ++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index d31bfb5ec..706a96a07 100644 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -436,13 +436,36 @@ void FeedsView::deleteSelectedItem() { } void FeedsView::moveSelectedItemUp() { - for (RootItem* it : selectedItems()) { + auto its = selectedItems(); + auto std_its = boolinq::from(its) + .orderBy([](RootItem* it) { + return it->sortOrder(); + }) + .toStdList(); + + for (RootItem* it : std_its) { m_sourceModel->changeSortOrder(it, false, false, it->sortOrder() - 1); } m_proxyModel->invalidate(); } +void FeedsView::moveSelectedItemDown() { + auto its = selectedItems(); + auto std_its = boolinq::from(its) + .orderBy([](RootItem* it) { + return it->sortOrder(); + }) + .reverse() + .toStdList(); + + for (RootItem* it : std_its) { + m_sourceModel->changeSortOrder(it, false, false, it->sortOrder() + 1); + } + + m_proxyModel->invalidate(); +} + void FeedsView::moveSelectedItemTop() { for (RootItem* it : selectedItems()) { m_sourceModel->changeSortOrder(it, true, false); @@ -459,14 +482,6 @@ void FeedsView::moveSelectedItemBottom() { m_proxyModel->invalidate(); } -void FeedsView::moveSelectedItemDown() { - for (RootItem* it : selectedItems()) { - m_sourceModel->changeSortOrder(it, false, false, it->sortOrder() + 1); - } - - m_proxyModel->invalidate(); -} - void FeedsView::rearrangeCategoriesOfSelectedItem() { for (RootItem* it : selectedItems()) { m_sourceModel->sortDirectDescendants(it, RootItem::Kind::Category);