Bump to v3.1.1: tray tooltip 'starting up' could get stuck after first launch
Bug: if v3.1 installed via auto-update on a profile with StartMinimised on, the tray icon's hover tooltip got stuck at the initial "RemSound - starting up" string. The snapshot tick was running and SetTooltip was being called every second with the live state, but Windows shell kept showing the original cached text on hover. The fix-by-workaround was a hide-then-re-show cycle which forced the shell to rebuild the icon registration with the latest NotifyIcon.Text. Root cause: NotifyIcon.Text values set BEFORE the icon's first NIM_ADD (i.e. while Visible=false) become the shell's "initial" tooltip when the icon eventually appears. Subsequent NIM_MODIFY calls from text changes DO propagate, but the shell tends to keep showing the original text on hover - presumably a tooltip-cache eviction quirk. In the resume-after-update-with-StartMinimised flow, the window briefly shows then BeginInvokes a Minimize that flips Visible=true before the snapshot timer has had a chance to fire, so the shell registers with the stale "starting up" string. Fix: drop the hard-coded "starting up" initial text from the controller ctor entirely. The controller now takes a Func<string> buildTooltip callback from MainForm and calls it in Minimize() right before flipping Visible=true, so the shell's NIM_ADD sees current live state instead of a stale string. The 1 Hz snapshot tick keeps working for ongoing live updates while the icon is visible. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
752c12b579
commit
aa099eb555
@@ -622,6 +622,10 @@ public sealed class MainForm : Form
|
||||
// every time the submenu opens, so newly-loaded profiles appear immediately.
|
||||
getRecentProfilePaths: () => AppConfig.Load().RecentProfiles,
|
||||
switchToProfile: path => SwitchToRecentProfile(path),
|
||||
// Tooltip builder — called once just before the tray icon first becomes visible
|
||||
// (in Minimize) so the shell's NIM_ADD sees the current live state instead of a
|
||||
// stale "starting up" string. Subsequent updates ride on the 1 Hz snapshot tick.
|
||||
buildTooltip: BuildTrayTooltip,
|
||||
exit: Close);
|
||||
|
||||
recordingController = new RecordingController(
|
||||
|
||||
Reference in New Issue
Block a user