diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 0d200848d..51a0d7d81 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -787,6 +787,9 @@ void DatabaseWidget::switchToMainView(bool previousDialogAccepted) } m_newParent = nullptr; + } else { + // Workaround: ensure entries are focused so search doesn't reset + m_entryView->setFocus(); } setCurrentWidget(m_mainWidget); diff --git a/src/gui/entry/EntryView.cpp b/src/gui/entry/EntryView.cpp index 0a620a687..cd7896b06 100644 --- a/src/gui/entry/EntryView.cpp +++ b/src/gui/entry/EntryView.cpp @@ -139,17 +139,18 @@ void EntryView::keyPressEvent(QKeyEvent* event) } int last = m_model->rowCount() - 1; + if (last > 0) { + if (event->key() == Qt::Key_Up && currentIndex().row() == 0) { + QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(last, 0)); + setCurrentEntry(m_model->entryFromIndex(index)); + return; + } - if (event->key() == Qt::Key_Up && currentIndex().row() == 0) { - QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(last, 0)); - setCurrentEntry(m_model->entryFromIndex(index)); - return; - } - - if (event->key() == Qt::Key_Down && currentIndex().row() == last) { - QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(0, 0)); - setCurrentEntry(m_model->entryFromIndex(index)); - return; + if (event->key() == Qt::Key_Down && currentIndex().row() == last) { + QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(0, 0)); + setCurrentEntry(m_model->entryFromIndex(index)); + return; + } } QTreeView::keyPressEvent(event); diff --git a/src/gui/group/GroupView.cpp b/src/gui/group/GroupView.cpp index 7c3c91355..fa7023351 100644 --- a/src/gui/group/GroupView.cpp +++ b/src/gui/group/GroupView.cpp @@ -72,6 +72,12 @@ void GroupView::dragMoveEvent(QDragMoveEvent* event) } } +void GroupView::focusInEvent(QFocusEvent* event) +{ + emitGroupChanged(); + QTreeView::focusInEvent(event); +} + Group* GroupView::currentGroup() { if (currentIndex() == QModelIndex()) { diff --git a/src/gui/group/GroupView.h b/src/gui/group/GroupView.h index 61f7b3bac..609ab0e03 100644 --- a/src/gui/group/GroupView.h +++ b/src/gui/group/GroupView.h @@ -47,6 +47,7 @@ private slots: protected: void dragMoveEvent(QDragMoveEvent* event) override; + void focusInEvent(QFocusEvent* event) override; private: void recInitExpanded(Group* group);