From 467fa84fd851459d5d9c9e5297e2500e938f0a18 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sat, 31 Oct 2026 11:26:52 +0100 Subject: fix: keep bulk tag actions linear, and say when they land Select all on a 10k-row search, then Archive, froze the window with one CPU pinned. gdb on the live process showed the UI thread cubic before the write was ever sent: each optimistic row write emitted dataChanged, whose handler refreshed the action labels by walking the whole selection, and each step of that walk looked the message up with a linear scan of every thread. ThreadListModel now answers id lookups from a lazily rebuilt hash, invalidated by its own structural signals and by hand at the two in-place id changes. MainWindow::batchModelWrites() holds the label refresh while a loop of optimistic writes runs, then refreshes once. Two list membership tests became sets. The announcement also used to fade on a timer whether or not the write had landed. It now reads "applying" until a round trip through the worker's queue says the write has run, then "done". An error takes the label back from a late "done". Item 211. Co-Authored-By: Claude Opus 5.5 --- translations/qtmaildir_it_IT.ts | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'translations/qtmaildir_it_IT.ts') diff --git a/translations/qtmaildir_it_IT.ts b/translations/qtmaildir_it_IT.ts index 51bf793..7a57598 100644 --- a/translations/qtmaildir_it_IT.ts +++ b/translations/qtmaildir_it_IT.ts @@ -1980,6 +1980,14 @@ protocollo di rete: il recupero e l'invio sono comandi esterni. Background sync running... Sincronizzazione in corso in background... + + %1, applying… + %1, in corso… + + + %1, done + %1, fatto + %1, waiting for the running sync to finish %1, in attesa che termini la sincronizzazione in corso -- cgit v1.2.3