diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG index b76be625e..00f9ae185 100644 --- a/resources/text/CHANGELOG +++ b/resources/text/CHANGELOG @@ -1,3 +1,9 @@ +3.5.4 +————— + +Fixed: +▪ First item in itemviews is now selected when focus is gained. (#142) + 3.5.3 ————— diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp index 0f2418655..52af51641 100755 --- a/src/gui/feedsview.cpp +++ b/src/gui/feedsview.cpp @@ -454,6 +454,14 @@ void FeedsView::switchVisibility() { setVisible(!isVisible()); } +void FeedsView::focusInEvent(QFocusEvent* event) { + QTreeView::focusInEvent(event); + + if (currentIndex().isValid()) { + selectionModel()->select(currentIndex(), QItemSelectionModel::SelectionFlag::Select | QItemSelectionModel::SelectionFlag::Rows); + } +} + void FeedsView::expandItemDelayed(const QModelIndex& idx) { QTimer::singleShot(100, this, [ = ] { setExpanded(m_proxyModel->mapFromSource(idx), true); diff --git a/src/gui/feedsview.h b/src/gui/feedsview.h index 620eeedc4..e17db4187 100755 --- a/src/gui/feedsview.h +++ b/src/gui/feedsview.h @@ -86,6 +86,7 @@ class FeedsView : public QTreeView { void openMessagesInNewspaperView(RootItem* root, const QList& messages); protected: + void focusInEvent(QFocusEvent* event); void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); void keyPressEvent(QKeyEvent* event); void contextMenuEvent(QContextMenuEvent* event); diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index f518f4805..7746e243e 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -138,6 +138,7 @@ void MessagesView::reloadSelections() { } void MessagesView::setupAppearance() { + setFocusPolicy(Qt::FocusPolicy::StrongFocus); setUniformRowHeights(true); setAcceptDrops(false); setDragEnabled(false); @@ -149,6 +150,7 @@ void MessagesView::setupAppearance() { setSortingEnabled(true); setAllColumnsShowFocus(false); setSelectionMode(QAbstractItemView::ExtendedSelection); + setItemDelegate(new StyledItemDelegateWithoutFocus(this)); header()->setDefaultSectionSize(MESSAGES_VIEW_DEFAULT_COL); header()->setMinimumSectionSize(MESSAGES_VIEW_MINIMUM_COL); @@ -157,6 +159,14 @@ void MessagesView::setupAppearance() { header()->setSortIndicatorShown(true); } +void MessagesView::focusInEvent(QFocusEvent* event) { + QTreeView::focusInEvent(event); + + if (currentIndex().isValid()) { + selectionModel()->select(currentIndex(), QItemSelectionModel::SelectionFlag::Select | QItemSelectionModel::SelectionFlag::Rows); + } +} + void MessagesView::keyPressEvent(QKeyEvent* event) { QTreeView::keyPressEvent(event); diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h index 2665fa7ef..284733c4c 100755 --- a/src/gui/messagesview.h +++ b/src/gui/messagesview.h @@ -93,6 +93,7 @@ class MessagesView : public QTreeView { void setupAppearance(); // Event reimplementations. + void focusInEvent(QFocusEvent* event); void contextMenuEvent(QContextMenuEvent* event); void mousePressEvent(QMouseEvent* event); void keyPressEvent(QKeyEvent* event);