summaryrefslogtreecommitdiffstats
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-14 14:11:18 +0200
committerDanilo M. <danix@danix.xyz>2026-09-14 14:11:18 +0200
commitc1c196ebeef9a17defe8a3070e8f10d548ffdf40 (patch)
treeb02cf24e29b1a0aef13c4dfd9fd0b2f0cc1bd136 /src/mainwindow.cpp
parent40328fb336ebcec716a39d1f78cdee95b89bc75b (diff)
downloadqtmaildir-c1c196ebeef9a17defe8a3070e8f10d548ffdf40.tar.gz
qtmaildir-c1c196ebeef9a17defe8a3070e8f10d548ffdf40.zip
fix: keep the message bar populated on a spam reply
The spam branch of populateMessageBar() was keyed on the path predicate alone, but its only action is hidden on a reply, so a reply inside an expanded spam conversation lost Reply, Forward and Star. Skip the branch when the reply guard is set, so the ordinary branch populates instead. Extend notSpamIsOfferedInTheSpamView with the message-bar assertions the QAction-only check missed, waiting for the reply row to load first, and mark Task 9's step checkboxes done in the plan.
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 68cdde7..2443ead 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2467,11 +2467,18 @@ void MainWindow::populateMessageBar()
// need no colour to tell them from each other, only from this one.
tinted = { m_actions.value(QStringLiteral("restore")) };
} else if (everySelectedRowIsInASpamFolder()
+ && !m_replySelectionHidesDelete
&& !m_threadView->selectionModel()->selectedRows().isEmpty()) {
// Item 201. Mail in a spam folder affords one thing the ordinary bar
// cannot offer: a way back out. Ordered after the trash branch and
// before the draft one, because a draft thrown into the spam folder is
// no more useful to edit than one thrown into the trash.
+ //
+ // NOT taken on a reply row. The only action here is not_spam and
+ // refreshTrashActions() hides it on a reply, so taking the branch left
+ // the bar EMPTY: a reply inside an expanded spam conversation lost
+ // Reply, Forward and Star. The trash branch needs no such guard because
+ // purge and empty_trash stay visible on a reply.
messageActions = { m_actions.value(QStringLiteral("not_spam")) };
} else if (currentMessageIsADraft()) {
messageActions = { m_actions.value(QStringLiteral("edit_draft")) };