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

View File

@ -332,15 +332,16 @@ void FeedsView::openSelectedItemsInNewspaperMode() {
} }
void FeedsView::selectNextItem() { 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)) { while (m_proxyModel->hasChildren(index_next) && !isExpanded(index_next)) {
expand(index_previous); expand(index_next);
index_previous = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier); index_next = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
} }
if (index_previous.isValid()) { if (index_next.isValid()) {
setCurrentIndex(index_previous); setCurrentIndex(index_next);
scrollTo(index_next, QAbstractItemView::ScrollHint::PositionAtTop);
} }
setFocus(); setFocus();
@ -356,6 +357,7 @@ void FeedsView::selectPreviousItem() {
if (index_previous.isValid()) { if (index_previous.isValid()) {
setCurrentIndex(index_previous); setCurrentIndex(index_previous);
scrollTo(index_previous, QAbstractItemView::ScrollHint::PositionAtTop);
} }
setFocus(); setFocus();
@ -373,6 +375,7 @@ void FeedsView::selectNextUnreadItem() {
if (next_unread_row.isValid()) { if (next_unread_row.isValid()) {
setCurrentIndex(next_unread_row); setCurrentIndex(next_unread_row);
scrollTo(next_unread_row, QAbstractItemView::ScrollHint::PositionAtTop);
emit requestViewNextUnreadMessage(); 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()) { if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()) {
scrollTo(currentIndex(), QAbstractItemView::PositionAtCenter); scrollTo(currentIndex(), QAbstractItemView::ScrollHint::PositionAtCenter);
} }
QTreeView::selectionChanged(selected, deselected); QTreeView::selectionChanged(selected, deselected);
@ -533,6 +533,7 @@ void MessagesView::selectNextItem() {
if (index_next.isValid()) { if (index_next.isValid()) {
setCurrentIndex(index_next); setCurrentIndex(index_next);
scrollTo(index_next, QAbstractItemView::ScrollHint::PositionAtTop);
selectionModel()->select(index_next, QItemSelectionModel::Select | QItemSelectionModel::Rows); selectionModel()->select(index_next, QItemSelectionModel::Select | QItemSelectionModel::Rows);
setFocus(); setFocus();
} }
@ -543,6 +544,7 @@ void MessagesView::selectPreviousItem() {
if (index_previous.isValid()) { if (index_previous.isValid()) {
setCurrentIndex(index_previous); setCurrentIndex(index_previous);
scrollTo(index_previous, QAbstractItemView::ScrollHint::PositionAtTop);
selectionModel()->select(index_previous, QItemSelectionModel::Select | QItemSelectionModel::Rows); selectionModel()->select(index_previous, QItemSelectionModel::Select | QItemSelectionModel::Rows);
setFocus(); setFocus();
} }
@ -565,8 +567,15 @@ void MessagesView::selectNextUnreadItem() {
if (next_unread.isValid()) { if (next_unread.isValid()) {
// We found unread message, mark it. // We found unread message, mark it.
setCurrentIndex(next_unread); setCurrentIndex(next_unread);
selectionModel()->select(next_unread, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); selectionModel()->select(next_unread,
QItemSelectionModel::SelectionFlag::ClearAndSelect |
QItemSelectionModel::SelectionFlag::Rows);
setFocus(); 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);
} }
} }