diff --git a/src/gui/rss/articlelistwidget.cpp b/src/gui/rss/articlelistwidget.cpp index bce26f1b4..79fe5113a 100644 --- a/src/gui/rss/articlelistwidget.cpp +++ b/src/gui/rss/articlelistwidget.cpp @@ -38,7 +38,7 @@ ArticleListWidget::ArticleListWidget(QWidget *parent) { setContextMenuPolicy(Qt::CustomContextMenu); setSelectionMode(QAbstractItemView::ExtendedSelection); - + checkInvariant(); } @@ -93,14 +93,9 @@ void ArticleListWidget::handleArticleAdded(RSS::Article *rssArticle) void ArticleListWidget::handleArticleRead(RSS::Article *rssArticle) { - if (m_unreadOnly) { - delete m_rssArticleToListItemMapping.take(rssArticle); - } - else { - auto item = mapRSSArticle(rssArticle); - item->setData(Qt::ForegroundRole, QColor("grey")); - item->setData(Qt::DecorationRole, QIcon(":/icons/sphere.png")); - } + auto item = mapRSSArticle(rssArticle); + item->setData(Qt::ForegroundRole, QColor("grey")); + item->setData(Qt::DecorationRole, QIcon(":/icons/sphere.png")); checkInvariant(); } diff --git a/src/gui/rss/feedlistwidget.cpp b/src/gui/rss/feedlistwidget.cpp index bf67f3c88..7065f1bad 100644 --- a/src/gui/rss/feedlistwidget.cpp +++ b/src/gui/rss/feedlistwidget.cpp @@ -138,6 +138,11 @@ void FeedListWidget::handleItemPathChanged(RSS::Item *rssItem) void FeedListWidget::handleItemAboutToBeRemoved(RSS::Item *rssItem) { delete m_rssToTreeItemMapping.take(rssItem); + + // RSS Item is still valid in this slot so if it is the last + // item we should prevent Unread list populating + if (m_rssToTreeItemMapping.size() == 1) + setCurrentItem(nullptr); } QTreeWidgetItem *FeedListWidget::stickyUnreadItem() const @@ -164,6 +169,8 @@ QList FeedListWidget::getAllOpenedFolders(QTreeWidgetItem *pa RSS::Item *FeedListWidget::getRSSItem(QTreeWidgetItem *item) const { + if (!item) return nullptr; + return reinterpret_cast(item->data(0, Qt::UserRole).value()); } diff --git a/src/gui/rss/rsswidget.cpp b/src/gui/rss/rsswidget.cpp index 59d204f47..d2524bc87 100644 --- a/src/gui/rss/rsswidget.cpp +++ b/src/gui/rss/rsswidget.cpp @@ -416,11 +416,6 @@ void RSSWidget::copySelectedFeedsURL() void RSSWidget::handleCurrentFeedItemChanged(QTreeWidgetItem *currentItem) { - if (!currentItem) { - m_articleListWidget->clear(); - return; - } - m_articleListWidget->setRSSItem(m_feedListWidget->getRSSItem(currentItem) , (currentItem == m_feedListWidget->stickyUnreadItem())); }