From 936bda8f71b385fd7f43991cbc72fafb70da893e Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sat, 19 Oct 2019 10:07:09 -0400 Subject: [PATCH] Add special context menu for entries * Fixes #2813 Added special context menu for entries to move the most-used actions to the top. Re-ordered actions in the entry menu to be more user friendly. --- src/gui/MainWindow.cpp | 19 +++++++++++++++++-- src/gui/MainWindow.h | 1 + src/gui/MainWindow.ui | 6 +++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index d74632046..01b8cf028 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -168,6 +168,21 @@ MainWindow::MainWindow() m_countDefaultAttributes = m_ui->menuEntryCopyAttribute->actions().size(); + m_entryContextMenu = new QMenu(this); + m_entryContextMenu->addAction(m_ui->actionEntryCopyUsername); + m_entryContextMenu->addAction(m_ui->actionEntryCopyPassword); + m_entryContextMenu->addAction(m_ui->menuEntryCopyAttribute->menuAction()); + m_entryContextMenu->addAction(m_ui->menuEntryTotp->menuAction()); + m_entryContextMenu->addSeparator(); + m_entryContextMenu->addAction(m_ui->actionEntryAutoType); + m_entryContextMenu->addSeparator(); + m_entryContextMenu->addAction(m_ui->actionEntryEdit); + m_entryContextMenu->addAction(m_ui->actionEntryClone); + m_entryContextMenu->addAction(m_ui->actionEntryDelete); + m_entryContextMenu->addSeparator(); + m_entryContextMenu->addAction(m_ui->actionEntryOpenUrl); + m_entryContextMenu->addAction(m_ui->actionEntryDownloadIcon); + restoreGeometry(config()->get("GUI/MainWindowGeometry").toByteArray()); restoreState(config()->get("GUI/MainWindowState").toByteArray()); #ifdef WITH_XC_BROWSER @@ -639,6 +654,7 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode) case DatabaseWidget::Mode::EditMode: case DatabaseWidget::Mode::ImportMode: case DatabaseWidget::Mode::LockedMode: { + // Enable select actions when editing an entry bool editEntryActive = dbWidget->isEntryEditActive(); const auto editEntryActionsMask = QList({m_ui->actionEntryCopyUsername, m_ui->actionEntryCopyPassword, @@ -656,7 +672,6 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode) entryActions << m_ui->menuEntryCopyAttribute->actions(); entryActions << m_ui->menuEntryTotp->actions(); for (auto action : entryActions) { - // Enable select actions when editing an entry bool enabled = editEntryActive && editEntryActionsMask.contains(action); if (action->menu()) { action->menu()->setEnabled(enabled); @@ -1110,7 +1125,7 @@ void MainWindow::releaseContextFocusLock() void MainWindow::showEntryContextMenu(const QPoint& globalPos) { - m_ui->menuEntries->popup(globalPos); + m_entryContextMenu->popup(globalPos); } void MainWindow::showGroupContextMenu(const QPoint& globalPos) diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index 1763a4ee0..71acb1081 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -146,6 +146,7 @@ private: SignalMultiplexer m_actionMultiplexer; QAction* m_clearHistoryAction; QAction* m_searchWidgetAction; + QMenu* m_entryContextMenu; QActionGroup* m_lastDatabasesActions; QActionGroup* m_copyAdditionalAttributeActions; InactivityTimer* m_inactivityTimer; diff --git a/src/gui/MainWindow.ui b/src/gui/MainWindow.ui index c53ab38c4..bb98363d4 100644 --- a/src/gui/MainWindow.ui +++ b/src/gui/MainWindow.ui @@ -195,7 +195,7 @@ 0 0 800 - 20 + 21 @@ -298,11 +298,11 @@ - - + +