diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp index 92a3dccc9..571a0800b 100644 --- a/src/gui/feedsview.cpp +++ b/src/gui/feedsview.cpp @@ -49,8 +49,7 @@ void FeedsView::setupAppearance() { void FeedsView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { - Q_UNUSED(selected) - Q_UNUSED(deselected) + QTreeView::selectionChanged(selected, deselected); QModelIndexList selection = selectionModel()->selectedRows(); QModelIndexList mapped_selection = m_proxyModel->mapListToSource(selection); diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index bbe2abd8a..f45faee7e 100644 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -13,7 +13,7 @@ MessagesView::MessagesView(QWidget *parent) - : QTreeView(parent), m_contextMenu(NULL) { + : QTreeView(parent), m_contextMenu(NULL), m_batchUnreadSwitch(false) { m_proxyModel = new MessagesProxyModel(this); m_sourceModel = m_proxyModel->sourceModel(); @@ -167,14 +167,17 @@ void MessagesView::currentChanged(const QModelIndex ¤t, current.row(), current.column(), mapped_current_index.row(), mapped_current_index.column()); - if (!signalsBlocked()) { - if (mapped_current_index.isValid()) { + if (mapped_current_index.isValid()) { + if (!m_batchUnreadSwitch) { + // Set this message as read only if current item + // wasn't changed by "mark selected messages unread" action. m_sourceModel->setMessageRead(mapped_current_index.row(), 1); - emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row())); - } - else { - emit currentMessageRemoved(); } + + emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row())); + } + else { + emit currentMessageRemoved(); } QTreeView::currentChanged(current, previous); @@ -189,8 +192,8 @@ void MessagesView::openSelectedSourceArticlesExternally() { QString browser = Settings::getInstance()->value(APP_CFG_MESSAGES, "external_browser_executable").toString(); QString arguments = Settings::getInstance()->value(APP_CFG_MESSAGES, - "external_browser_arguments", - "%1").toString(); + "external_browser_arguments", + "%1").toString(); if (browser.isEmpty() || arguments.isEmpty()) { QMessageBox::critical(this, @@ -244,9 +247,9 @@ void MessagesView::setSelectedMessagesReadStatus(int read) { if (read == 0) { // User selected to mark some messages as unread, if one // of them will be marked as current, then it will be read again. - blockSignals(true); + m_batchUnreadSwitch = true; setCurrentIndex(current_index); - blockSignals(false); + m_batchUnreadSwitch = false; } else { setCurrentIndex(current_index); @@ -315,9 +318,9 @@ void MessagesView::setAllMessagesReadStatus(int read) { if (read == 0) { // User selected to mark some messages as unread, if one // of them will be marked as current, then it will be read again. - blockSignals(true); + m_batchUnreadSwitch = true; setCurrentIndex(current_index); - blockSignals(false); + m_batchUnreadSwitch = false; } else { setCurrentIndex(current_index); diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h index ae7bb7f7e..7ba07b2ef 100755 --- a/src/gui/messagesview.h +++ b/src/gui/messagesview.h @@ -67,6 +67,8 @@ class MessagesView : public QTreeView { MessagesProxyModel *m_proxyModel; MessagesModel *m_sourceModel; + + bool m_batchUnreadSwitch; }; #endif // MESSAGESVIEW_H