From 4e376881059d3396f40e762e1de050b99b1e583e Mon Sep 17 00:00:00 2001 From: "Vladimir Golovnev (Glassez)" Date: Thu, 4 May 2017 12:30:02 +0300 Subject: [PATCH 1/3] Properly clear ArticleListWidget --- src/gui/rss/feedlistwidget.cpp | 2 ++ src/gui/rss/rsswidget.cpp | 5 ----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/gui/rss/feedlistwidget.cpp b/src/gui/rss/feedlistwidget.cpp index bf67f3c88..b4a2b5650 100644 --- a/src/gui/rss/feedlistwidget.cpp +++ b/src/gui/rss/feedlistwidget.cpp @@ -164,6 +164,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())); } From 2d3914c0778095e8b9bbaa1093a98f013acbcb53 Mon Sep 17 00:00:00 2001 From: "Vladimir Golovnev (Glassez)" Date: Thu, 4 May 2017 12:39:59 +0300 Subject: [PATCH 2/3] Prevent incorrect popullating of Unread RSS list --- src/gui/rss/feedlistwidget.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gui/rss/feedlistwidget.cpp b/src/gui/rss/feedlistwidget.cpp index b4a2b5650..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 From 76e338365072b3aae5e3a2ee0ee001db83b5e282 Mon Sep 17 00:00:00 2001 From: "Vladimir Golovnev (Glassez)" Date: Thu, 4 May 2017 20:37:05 +0300 Subject: [PATCH 3/3] Don't remove read articles from Unread list Revert back old behavior (incorrect but, perhaps, more user-friendly), when Unread list populates with "unread" articles only but then it can contain "read" articles if they become "read" when Unread list is shown. --- src/gui/rss/articlelistwidget.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) 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(); }