From 2703d4c42710418b0f15a41fa896824e2e1a6170 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Mon, 24 Aug 2026 11:13:04 +0200 Subject: feat(ui): give the message pane its own action bar Items 139, 140 and 141, built together because the seam between them is wasted work: 140 needs a container and 141 is that container. The main toolbar had grown to mix two scopes. Sync, Archive, Delete, Mark all read and Undo act on the list or the selection; Compose, Reply and Forward are about one message. With everything in one row the distinction was invisible, and Forward was on no toolbar at all, reachable only from the Message menu, which is item 139. Compose, Reply and Forward now sit on a bar above the message pane, and LEAVE the main toolbar rather than gaining a second home: that is what makes the toolbar's remaining contents mean one thing. Toggle HTML joins them at the right end, separated by an expanding spacer, since changing how a message is displayed is a different scope from acting on it. That layout was the open design question item 141 recorded, and it was settled with the user rather than guessed. The actions are MainWindow's own QAction objects shown a second time, never copies: a duplicate would carry its own enablement and drift from the menu entry updateComposeActions() keeps in step. MessageView::setBarActions() is the seam, so the pane still knows nothing about the window's action map. Two things worth recording: QToolBar has no addStretch(), so the separation is an expanding spacer widget. A test asserting only on action ORDER passes with that spacer deleted, measured, so it asserts on the spacer's size policy instead. noTwoActionsShareAnIcon looked up the toolbar with an unnamed findChild(). There are two toolbars now, so it is pinned to main_toolbar: pointed at the pane's bar it would have asserted that a thread action is absent from a bar that never holds any, and passed while the rule it exists for went unchecked. --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'CHANGELOG.md') diff --git a/CHANGELOG.md b/CHANGELOG.md index abd0ba7..cd3c419 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,9 @@ point at which they are stable. reply follows what the message being answered used. - Drafts autosave to the account's `drafts` folder as ordinary Maildir files, so mbsync carries them to the server and another client can pick one up. +- **A button bar over the message pane.** Compose, Reply and Forward sit + above the message, with Toggle HTML at the right end. Forward had been + reachable only from the Message menu. - A reply opens with the cursor on a blank line above the quote, and with the body focused, so typing can start immediately. `[compose] quote_position` defaults to `below` (your reply first, the quote under it); `above` puts the @@ -43,6 +46,12 @@ point at which they are stable. under `assets/hooks/`. They moved from the companion `mailctl` project, which is being retired. +### Changed + +- The main toolbar keeps only the actions that act on the list or the + selection (Sync, Archive, Delete, Mark all read, Undo). Compose and Reply + move to the new message-pane bar, where Forward joins them. + ### Fixed - Sent mail and drafts no longer appear in the inbox. notmuch tags every newly -- cgit v1.2.3