This commit is contained in:
Martin Rotter 2021-03-22 14:08:03 +01:00
parent 830939f5e6
commit 6acbac4421
3 changed files with 22 additions and 10 deletions

View File

@ -5,6 +5,8 @@
#include "core/feeddownloader.h"
#include "core/feedsproxymodel.h"
#include "core/messagesproxymodel.h"
#include "database/databasecleaner.h"
#include "database/databasefactory.h"
#include "exceptions/applicationexception.h"
#include "gui/dialogs/formdatabasecleanup.h"
#include "gui/dialogs/formmain.h"
@ -16,8 +18,6 @@
#include "gui/messagesview.h"
#include "gui/statusbar.h"
#include "gui/systemtrayicon.h"
#include "database/databasecleaner.h"
#include "database/databasefactory.h"
#include "miscellaneous/feedreader.h"
#include "miscellaneous/iconfactory.h"
#include "miscellaneous/mutex.h"

View File

@ -332,15 +332,16 @@ void FeedsView::openSelectedItemsInNewspaperMode() {
}
void FeedsView::selectNextItem() {
QModelIndex index_previous = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
QModelIndex index_next = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
while (m_proxyModel->hasChildren(index_previous) && !isExpanded(index_previous)) {
expand(index_previous);
index_previous = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
while (m_proxyModel->hasChildren(index_next) && !isExpanded(index_next)) {
expand(index_next);
index_next = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
}
if (index_previous.isValid()) {
setCurrentIndex(index_previous);
if (index_next.isValid()) {
setCurrentIndex(index_next);
scrollTo(index_next, QAbstractItemView::ScrollHint::PositionAtTop);
}
setFocus();
@ -356,6 +357,7 @@ void FeedsView::selectPreviousItem() {
if (index_previous.isValid()) {
setCurrentIndex(index_previous);
scrollTo(index_previous, QAbstractItemView::ScrollHint::PositionAtTop);
}
setFocus();
@ -373,6 +375,7 @@ void FeedsView::selectNextUnreadItem() {
if (next_unread_row.isValid()) {
setCurrentIndex(next_unread_row);
scrollTo(next_unread_row, QAbstractItemView::ScrollHint::PositionAtTop);
emit requestViewNextUnreadMessage();
}
}

View File

@ -348,7 +348,7 @@ void MessagesView::selectionChanged(const QItemSelection& selected, const QItemS
}
if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()) {
scrollTo(currentIndex(), QAbstractItemView::PositionAtCenter);
scrollTo(currentIndex(), QAbstractItemView::ScrollHint::PositionAtCenter);
}
QTreeView::selectionChanged(selected, deselected);
@ -533,6 +533,7 @@ void MessagesView::selectNextItem() {
if (index_next.isValid()) {
setCurrentIndex(index_next);
scrollTo(index_next, QAbstractItemView::ScrollHint::PositionAtTop);
selectionModel()->select(index_next, QItemSelectionModel::Select | QItemSelectionModel::Rows);
setFocus();
}
@ -543,6 +544,7 @@ void MessagesView::selectPreviousItem() {
if (index_previous.isValid()) {
setCurrentIndex(index_previous);
scrollTo(index_previous, QAbstractItemView::ScrollHint::PositionAtTop);
selectionModel()->select(index_previous, QItemSelectionModel::Select | QItemSelectionModel::Rows);
setFocus();
}
@ -565,8 +567,15 @@ void MessagesView::selectNextUnreadItem() {
if (next_unread.isValid()) {
// We found unread message, mark it.
setCurrentIndex(next_unread);
selectionModel()->select(next_unread, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
selectionModel()->select(next_unread,
QItemSelectionModel::SelectionFlag::ClearAndSelect |
QItemSelectionModel::SelectionFlag::Rows);
setFocus();
// Make sure that item is properly visible even if
// message previewer was hidden and shows up.
qApp->processEvents();
scrollTo(next_unread, QAbstractItemView::ScrollHint::PositionAtTop);
}
}