mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-12-25 15:29:44 -05:00
Improve UI of the search edit.
- The copy action (Control+C) when no text is selected copies the password of the current entry. This should be reasonable when Control+B copies the username. - Down at EOL moves the focus to the entry view. Enter and Tab should do that, but it would be handy for user to be able to get to the third entry by hitting Down three times.
This commit is contained in:
parent
5bd525a6dd
commit
5c7c7f54fa
@ -23,6 +23,7 @@
|
|||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
|
#include <QKeyEvent>
|
||||||
#include <QSplitter>
|
#include <QSplitter>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
@ -88,6 +89,7 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
|
|||||||
m_searchUi->closeSearchButton->setShortcut(Qt::Key_Escape);
|
m_searchUi->closeSearchButton->setShortcut(Qt::Key_Escape);
|
||||||
m_searchWidget->hide();
|
m_searchWidget->hide();
|
||||||
m_searchUi->caseSensitiveCheckBox->setVisible(false);
|
m_searchUi->caseSensitiveCheckBox->setVisible(false);
|
||||||
|
m_searchUi->searchEdit->installEventFilter(this);
|
||||||
|
|
||||||
QVBoxLayout* vLayout = new QVBoxLayout(rightHandSideWidget);
|
QVBoxLayout* vLayout = new QVBoxLayout(rightHandSideWidget);
|
||||||
vLayout->setMargin(0);
|
vLayout->setMargin(0);
|
||||||
@ -982,3 +984,33 @@ bool DatabaseWidget::currentEntryHasNotes()
|
|||||||
}
|
}
|
||||||
return !currentEntry->notes().isEmpty();
|
return !currentEntry->notes().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DatabaseWidget::eventFilter(QObject* object, QEvent* event)
|
||||||
|
{
|
||||||
|
if (object == m_searchUi->searchEdit) {
|
||||||
|
if (event->type() == QEvent::KeyPress) {
|
||||||
|
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
||||||
|
if (keyEvent->matches(QKeySequence::Copy)) {
|
||||||
|
// If Control+C is pressed in the search edit when no
|
||||||
|
// text is selected, copy the password of the current
|
||||||
|
// entry.
|
||||||
|
Entry* currentEntry = m_entryView->currentEntry();
|
||||||
|
if (currentEntry && !m_searchUi->searchEdit->hasSelectedText()) {
|
||||||
|
setClipboardTextAndMinimize(currentEntry->password());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (keyEvent->matches(QKeySequence::MoveToNextLine)) {
|
||||||
|
// If Down is pressed at EOL in the search edit, move
|
||||||
|
// the focus to the entry view.
|
||||||
|
if (!m_searchUi->searchEdit->hasSelectedText() &&
|
||||||
|
m_searchUi->searchEdit->cursorPosition() == m_searchUi->searchEdit->text().length()) {
|
||||||
|
m_entryView->setFocus();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -102,6 +102,9 @@ Q_SIGNALS:
|
|||||||
void splitterSizesChanged();
|
void splitterSizesChanged();
|
||||||
void entryColumnSizesChanged();
|
void entryColumnSizesChanged();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool eventFilter(QObject* object, QEvent* event);
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void createEntry();
|
void createEntry();
|
||||||
void cloneEntry();
|
void cloneEntry();
|
||||||
|
Loading…
Reference in New Issue
Block a user