Fix incorrect "Restore Entry" option shown for non-recycle bin items in search results (#12198)

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Jonathan White <support@dmapps.us>
This commit is contained in:
Copilot 2025-09-09 20:26:45 -04:00 committed by Jonathan White
parent c9dea4482b
commit 4abecd7d5c
No known key found for this signature in database
GPG key ID: 440FC65F2E0C6E01
3 changed files with 20 additions and 2 deletions

View file

@ -2543,6 +2543,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()) {

View file

@ -97,6 +97,7 @@ public:
bool canDeleteCurrentGroup() const;
bool isGroupSelected() const;
bool isRecycleBinSelected() const;
bool hasRecycledSelectedEntries() const;
int numberOfSelectedEntries() const;
int currentEntryIndex() const;

View file

@ -982,8 +982,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()));