Summary: | Combined View -> All Feeds -> Next Unread Article -> Crash | ||
---|---|---|---|
Product: | [Applications] akregator | Reporter: | Christiaan Hees <kde> |
Component: | general | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Christiaan Hees
2006-02-15 04:38:36 UTC
SVN commit 509576 by osterfeld: Fix crash in View::slotNext/PrevUnreadArticle() Combined View: do slotNext/PrevUnreadFeed() in slotNext/PrevUnreadArticle(), as selecting the next article does not make much sense... (at least not now) BUG: 121999 M +6 -0 akregator_view.cpp M +23 -13 articlelistview.cpp --- branches/KDE/3.5/kdepim/akregator/src/akregator_view.cpp #509575:509576 @@ -990,6 +990,9 @@ void View::slotNextUnreadArticle() { + if (m_viewMode == CombinedView) + m_listTabWidget->activeView()->slotNextUnreadFeed(); + TreeNode* sel = m_listTabWidget->activeView()->selectedNode(); if (sel && sel->unread() > 0) m_articleList->slotNextUnreadArticle(); @@ -999,6 +1002,9 @@ void View::slotPrevUnreadArticle() { + if (m_viewMode == CombinedView) + m_listTabWidget->activeView()->slotPrevUnreadFeed(); + TreeNode* sel = m_listTabWidget->activeView()->selectedNode(); if (sel && sel->unread() > 0) m_articleList->slotPreviousUnreadArticle(); --- branches/KDE/3.5/kdepim/akregator/src/articlelistview.cpp #509575:509576 @@ -608,21 +608,26 @@ void ArticleListView::slotNextUnreadArticle() { - ArticleItem* start = 0; + ArticleItem* start = 0L; if (!currentItem() || selectedItems().isEmpty()) start = dynamic_cast<ArticleItem*>(firstChild()); else start = dynamic_cast<ArticleItem*>(currentItem()->itemBelow() ? currentItem()->itemBelow() : firstChild()); ArticleItem* i = start; - ArticleItem* unread = 0; + ArticleItem* unread = 0L; do { - if (i && i->article().status() != Article::Read) - unread = i; - else - i = dynamic_cast<ArticleItem*>(i && i->itemBelow() ? i->itemBelow() : firstChild()); + if (i == 0L) + i = static_cast<ArticleItem*>(lastChild()); + else + { + if (i->article().status() != Article::Read) + unread = i; + else + i = static_cast<ArticleItem*>(i && i->itemBelow() ? i->itemBelow() : firstChild()); + } } while (!unread && i != start); @@ -638,23 +643,28 @@ void ArticleListView::slotPreviousUnreadArticle() { - ArticleItem* start = 0; + ArticleItem* start = 0L; if (!currentItem() || selectedItems().isEmpty()) start = dynamic_cast<ArticleItem*>(firstChild()); else start = dynamic_cast<ArticleItem*>(currentItem()->itemAbove() ? currentItem()->itemAbove() : firstChild()); ArticleItem* i = start; - ArticleItem* unread = 0; + ArticleItem* unread = 0L; do { - if (i && i->article().status() != Article::Read) - unread = i; - else - i = dynamic_cast<ArticleItem*>(i->itemAbove() ? i->itemAbove() : lastChild()); + if (i == 0L) + i = static_cast<ArticleItem*>(lastChild()); + else + { + if (i->article().status() != Article::Read) + unread = i; + else + i = static_cast<ArticleItem*>(i->itemAbove() ? i->itemAbove() : lastChild()); + } } - while ( !(unread != 0 || i == start) ); + while ( !(unread != 0L || i == start) ); if (unread) { |