[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/akregator/src
From: Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date: 2006-01-25 8:52:18
Message-ID: 1138179138.717782.2577.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 502208 by osterfeld:
belated forwardport of 119724
M +47 -1 articlelistview.cpp
--- trunk/KDE/kdepim/akregator/src/articlelistview.cpp #502207:502208
@@ -368,7 +368,12 @@
void ArticleListView::slotArticlesUpdated(TreeNode* /*node*/, const QList<Article>& list)
{
setUpdatesEnabled(false);
+ // if only one item is selected and this selected item
+ // is deleted, we will select the next item in the list
+ bool singleSelected = selectedArticles().count() == 1;
+ Q3ListViewItem* next = 0; // the item to select if a selected item is deleted
+
for (QList<Article>::ConstIterator it = list.begin(); it != list.end(); ++it)
{
@@ -376,8 +381,16 @@
{
ArticleItem* ali = d->articleMap[(*it).guid()];
- if ((*it).isDeleted()) // if article was set to deleted, delete item
+ if (ali && (*it).isDeleted()) // if article was set to deleted, delete item
{
+ if (singleSelected && ali->isSelected())
+ {
+ if (ali->itemBelow())
+ next = ali->itemBelow();
+ else if (ali->itemAbove())
+ next = ali->itemAbove();
+ }
+
d->articleMap.remove((*it).guid());
delete ali;
}
@@ -391,22 +404,55 @@
}
}
+ // if the only selected item was deleted, select
+ // an item next to it
+ if (singleSelected && next != 0)
+ {
+ setSelected(next, true);
+ setCurrentItem(next);
+ }
+
setUpdatesEnabled(true);
triggerUpdate();
}
void ArticleListView::slotArticlesRemoved(TreeNode* /*node*/, const QList<Article>& list)
{
+ // if only one item is selected and this selected item
+ // is deleted, we will select the next item in the list
+ bool singleSelected = selectedArticles().count() == 1;
+
+ Q3ListViewItem* next = 0; // the item to select if a selected item is deleted
+
setUpdatesEnabled(false);
+
for (QList<Article>::ConstIterator it = list.begin(); it != list.end(); ++it)
{
if (d->articleMap.contains((*it).guid()))
{
ArticleItem* ali = d->articleMap[(*it).guid()];
d->articleMap.remove((*it).guid());
+
+ if (singleSelected && ali->isSelected())
+ {
+ if (ali->itemBelow())
+ next = ali->itemBelow();
+ else if (ali->itemAbove())
+ next = ali->itemAbove();
+ }
+
delete ali;
}
}
+
+ // if the only selected item was deleted, select
+ // an item next to it
+ if (singleSelected && next != 0)
+ {
+ setSelected(next, true);
+ setCurrentItem(next);
+ }
+
setUpdatesEnabled(true);
triggerUpdate();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic