diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index df13b1d5a..1f203c2b4 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -2700,6 +2700,22 @@ bool DatabaseWidget::isRecycleBinSelected() const return (group && group->isRecycled()) || (entry && entry->isRecycled()); } +bool DatabaseWidget::hasRecycledSelectedEntries() const +{ + if (!m_entryView) { + return false; + } + + // Check if any of the selected entries are actually recycled + for (auto* entry : m_entryView->selectedEntries()) { + if (entry && entry->isRecycled()) { + return true; + } + } + + return false; +} + void DatabaseWidget::emptyRecycleBin() { if (!isRecycleBinSelected()) { diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index 2507f1842..d624a7e61 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -99,6 +99,7 @@ public: bool canDeleteCurrentGroup() const; bool isGroupSelected() const; bool isRecycleBinSelected() const; + bool hasRecycledSelectedEntries() const; int numberOfSelectedEntries() const; int currentEntryIndex() const; diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 97be28c39..a75963e07 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -955,8 +955,9 @@ void MainWindow::updateMenuActionState() } else { m_ui->actionEntryDelete->setToolTip(tr("Delete Entry")); } - m_ui->actionEntryRestore->setVisible(multiEntrySelected && inRecycleBin); - m_ui->actionEntryRestore->setEnabled(multiEntrySelected && inRecycleBin); + bool hasRecycledEntries = (inDatabase && dbWidget && dbWidget->hasRecycledSelectedEntries()); + m_ui->actionEntryRestore->setVisible(multiEntrySelected && hasRecycledEntries); + m_ui->actionEntryRestore->setEnabled(multiEntrySelected && hasRecycledEntries); if (dbWidget) { m_ui->actionEntryRestore->setText(tr("Restore Entry(s)", "", dbWidget->numberOfSelectedEntries())); m_ui->actionEntryRestore->setToolTip(tr("Restore Entry(s)", "", dbWidget->numberOfSelectedEntries()));