Fix changing focus around the main window using tab

* Override Qt's default [broken] behavior of handling Tab/Shift+Tab to navigate around the MainWindow. Completely fixes trapped focus.

* Improve handling of search results when navigating the UI.

* Fix selecting first entry after ending a search.

* Add keyboard shortcuts to directly focus on search (F1), Group List (F2), and Entry List (F3)

* Fixes #2878, #4636, and #4221
This commit is contained in:
Jonathan White 2020-04-21 18:46:21 -04:00
parent 5142981018
commit 49487f9d4a
11 changed files with 129 additions and 66 deletions

View file

@ -76,12 +76,15 @@ public:
explicit DatabaseWidget(const QString& filePath, QWidget* parent = nullptr);
~DatabaseWidget();
void setFocus(Qt::FocusReason reason);
QSharedPointer<Database> database() const;
DatabaseWidget::Mode currentMode() const;
bool isLocked() const;
bool isSaving() const;
bool isSearchActive() const;
bool isEntryViewActive() const;
bool isEntryEditActive() const;
bool isGroupEditActive() const;
@ -161,7 +164,8 @@ public slots:
void cloneEntry();
void deleteSelectedEntries();
void deleteEntries(QList<Entry*> entries);
void setFocus();
void focusOnEntries();
void focusOnGroups();
void copyTitle();
void copyUsername();
void copyPassword();
@ -217,6 +221,7 @@ public slots:
protected:
void closeEvent(QCloseEvent* event) override;
void showEvent(QShowEvent* event) override;
bool focusNextPrevChild(bool next) override;
private slots:
void entryActivationSignalReceived(Entry* entry, EntryModel::ModelColumn column);
@ -228,7 +233,7 @@ private slots:
void emitGroupContextMenuRequested(const QPoint& pos);
void emitEntryContextMenuRequested(const QPoint& pos);
void onEntryChanged(Entry* entry);
void onGroupChanged(Group* group);
void onGroupChanged();
void onDatabaseModified();
void connectDatabaseSignals();
void loadDatabase(bool accepted);