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);