Browse Source

Merge pull request #6744 from glassez/fix-rss

Fix crash when delete last RSS feed. Closes #6742
adaptive-webui-19844
Vladimir Golovnev 8 years ago committed by GitHub
parent
commit
706097ddda
  1. 13
      src/gui/rss/articlelistwidget.cpp
  2. 7
      src/gui/rss/feedlistwidget.cpp
  3. 5
      src/gui/rss/rsswidget.cpp

13
src/gui/rss/articlelistwidget.cpp

@ -38,7 +38,7 @@ ArticleListWidget::ArticleListWidget(QWidget *parent) @@ -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) @@ -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();
}

7
src/gui/rss/feedlistwidget.cpp

@ -138,6 +138,11 @@ void FeedListWidget::handleItemPathChanged(RSS::Item *rssItem) @@ -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<QTreeWidgetItem *> FeedListWidget::getAllOpenedFolders(QTreeWidgetItem *pa @@ -164,6 +169,8 @@ QList<QTreeWidgetItem *> FeedListWidget::getAllOpenedFolders(QTreeWidgetItem *pa
RSS::Item *FeedListWidget::getRSSItem(QTreeWidgetItem *item) const
{
if (!item) return nullptr;
return reinterpret_cast<RSS::Item *>(item->data(0, Qt::UserRole).value<quintptr>());
}

5
src/gui/rss/rsswidget.cpp

@ -416,11 +416,6 @@ void RSSWidget::copySelectedFeedsURL() @@ -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()));
}

Loading…
Cancel
Save