This commit is contained in:
Martin Rotter 2017-10-22 19:54:22 +02:00
parent 35bb9c9a56
commit ad36c34298
5 changed files with 26 additions and 0 deletions

View File

@ -1,3 +1,9 @@
3.5.4
—————
Fixed:
▪ First item in itemviews is now selected when focus is gained. (#142)
3.5.3 3.5.3
————— —————

View File

@ -454,6 +454,14 @@ void FeedsView::switchVisibility() {
setVisible(!isVisible()); 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) { void FeedsView::expandItemDelayed(const QModelIndex& idx) {
QTimer::singleShot(100, this, [ = ] { QTimer::singleShot(100, this, [ = ] {
setExpanded(m_proxyModel->mapFromSource(idx), true); setExpanded(m_proxyModel->mapFromSource(idx), true);

View File

@ -86,6 +86,7 @@ class FeedsView : public QTreeView {
void openMessagesInNewspaperView(RootItem* root, const QList<Message>& messages); void openMessagesInNewspaperView(RootItem* root, const QList<Message>& messages);
protected: protected:
void focusInEvent(QFocusEvent* event);
void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent* event);
void contextMenuEvent(QContextMenuEvent* event); void contextMenuEvent(QContextMenuEvent* event);

View File

@ -138,6 +138,7 @@ void MessagesView::reloadSelections() {
} }
void MessagesView::setupAppearance() { void MessagesView::setupAppearance() {
setFocusPolicy(Qt::FocusPolicy::StrongFocus);
setUniformRowHeights(true); setUniformRowHeights(true);
setAcceptDrops(false); setAcceptDrops(false);
setDragEnabled(false); setDragEnabled(false);
@ -149,6 +150,7 @@ void MessagesView::setupAppearance() {
setSortingEnabled(true); setSortingEnabled(true);
setAllColumnsShowFocus(false); setAllColumnsShowFocus(false);
setSelectionMode(QAbstractItemView::ExtendedSelection); setSelectionMode(QAbstractItemView::ExtendedSelection);
setItemDelegate(new StyledItemDelegateWithoutFocus(this)); setItemDelegate(new StyledItemDelegateWithoutFocus(this));
header()->setDefaultSectionSize(MESSAGES_VIEW_DEFAULT_COL); header()->setDefaultSectionSize(MESSAGES_VIEW_DEFAULT_COL);
header()->setMinimumSectionSize(MESSAGES_VIEW_MINIMUM_COL); header()->setMinimumSectionSize(MESSAGES_VIEW_MINIMUM_COL);
@ -157,6 +159,14 @@ void MessagesView::setupAppearance() {
header()->setSortIndicatorShown(true); 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) { void MessagesView::keyPressEvent(QKeyEvent* event) {
QTreeView::keyPressEvent(event); QTreeView::keyPressEvent(event);

View File

@ -93,6 +93,7 @@ class MessagesView : public QTreeView {
void setupAppearance(); void setupAppearance();
// Event reimplementations. // Event reimplementations.
void focusInEvent(QFocusEvent* event);
void contextMenuEvent(QContextMenuEvent* event); void contextMenuEvent(QContextMenuEvent* event);
void mousePressEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent* event);
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent* event);