mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
parent
9b8feed3ed
commit
31aa5e12e5
@ -73,9 +73,13 @@ void AutoTypeMatchView::keyPressEvent(QKeyEvent* event)
|
||||
{
|
||||
if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) && currentIndex().isValid()) {
|
||||
emit matchActivated(matchFromIndex(currentIndex()));
|
||||
} else if (event->key() == Qt::Key_PageUp) {
|
||||
moveSelection(-5);
|
||||
} else if (event->key() == Qt::Key_PageDown) {
|
||||
moveSelection(5);
|
||||
} else {
|
||||
QTableView::keyPressEvent(event);
|
||||
}
|
||||
|
||||
QTableView::keyPressEvent(event);
|
||||
}
|
||||
|
||||
void AutoTypeMatchView::setMatchList(const QList<AutoTypeMatch>& matches, bool selectFirst)
|
||||
@ -101,6 +105,13 @@ void AutoTypeMatchView::filterList(const QString& filter)
|
||||
setCurrentIndex(m_sortModel->index(0, 0));
|
||||
}
|
||||
|
||||
void AutoTypeMatchView::moveSelection(int offset)
|
||||
{
|
||||
auto index = currentIndex();
|
||||
auto row = index.isValid() ? index.row() : -1;
|
||||
selectRow(qBound(0, row + offset, model()->rowCount() - 1));
|
||||
}
|
||||
|
||||
AutoTypeMatch AutoTypeMatchView::currentMatch()
|
||||
{
|
||||
QModelIndexList list = selectionModel()->selectedRows();
|
||||
|
@ -36,6 +36,7 @@ public:
|
||||
AutoTypeMatch matchFromIndex(const QModelIndex& index);
|
||||
void setMatchList(const QList<AutoTypeMatch>& matches, bool selectFirst);
|
||||
void filterList(const QString& filter);
|
||||
void moveSelection(int offset);
|
||||
|
||||
signals:
|
||||
void currentMatchChanged(AutoTypeMatch match);
|
||||
|
@ -147,33 +147,6 @@ void AutoTypeSelectDialog::performSearch()
|
||||
m_ui->view->setMatchList(matches, !m_ui->search->text().isEmpty());
|
||||
}
|
||||
|
||||
void AutoTypeSelectDialog::moveSelectionUp()
|
||||
{
|
||||
auto current = m_ui->view->currentIndex();
|
||||
auto previous = current.sibling(current.row() - 1, 0);
|
||||
|
||||
if (previous.isValid()) {
|
||||
m_ui->view->setCurrentIndex(previous);
|
||||
}
|
||||
}
|
||||
|
||||
void AutoTypeSelectDialog::moveSelectionDown()
|
||||
{
|
||||
auto current = m_ui->view->currentIndex();
|
||||
|
||||
// special case where we have no default selection (empty search)
|
||||
if (!current.isValid()) {
|
||||
m_ui->view->setCurrentIndex(m_ui->view->indexAt({0, 0}));
|
||||
return;
|
||||
}
|
||||
|
||||
auto next = current.sibling(current.row() + 1, 0);
|
||||
|
||||
if (next.isValid()) {
|
||||
m_ui->view->setCurrentIndex(next);
|
||||
}
|
||||
}
|
||||
|
||||
void AutoTypeSelectDialog::activateCurrentMatch()
|
||||
{
|
||||
submitAutoTypeMatch(m_ui->view->currentMatch());
|
||||
@ -217,10 +190,16 @@ bool AutoTypeSelectDialog::eventFilter(QObject* obj, QEvent* event)
|
||||
auto* keyEvent = static_cast<QKeyEvent*>(event);
|
||||
switch (keyEvent->key()) {
|
||||
case Qt::Key_Up:
|
||||
moveSelectionUp();
|
||||
m_ui->view->moveSelection(-1);
|
||||
return true;
|
||||
case Qt::Key_Down:
|
||||
moveSelectionDown();
|
||||
m_ui->view->moveSelection(1);
|
||||
return true;
|
||||
case Qt::Key_PageUp:
|
||||
m_ui->view->moveSelection(-5);
|
||||
return true;
|
||||
case Qt::Key_PageDown:
|
||||
m_ui->view->moveSelection(5);
|
||||
return true;
|
||||
case Qt::Key_Escape:
|
||||
if (m_ui->search->text().isEmpty()) {
|
||||
|
@ -52,8 +52,6 @@ protected:
|
||||
private slots:
|
||||
void submitAutoTypeMatch(AutoTypeMatch match);
|
||||
void performSearch();
|
||||
void moveSelectionUp();
|
||||
void moveSelectionDown();
|
||||
void activateCurrentMatch();
|
||||
void updateActionMenu(const AutoTypeMatch& match);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user