Register Windows notification icon via metadata after NewWindow.
Fyne toasts read App.Icon without SetIcon, preserving the PE multi-size window and taskbar icon while giving failure notifications app artwork. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -44,6 +44,8 @@ import (
|
||||
// - Tray: SetSystemTrayIcon(IconSmallICO()). The notification area is ICO-native
|
||||
// and renders at 16-24px; a single-frame 16x16 .ico pins the hand-tuned glyph
|
||||
// (a multi-size .ico made the tray pick and downscale a larger frame).
|
||||
// - Desktop toasts: AppMetadata.Icon (set after NewWindow in run.go) feeds
|
||||
// SendNotification without calling SetIcon, which would override GLFW_ICON.
|
||||
//
|
||||
// Linux / other non-Windows (no PE icon resource exists):
|
||||
// - Window titlebar: a.SetIcon(IconSmall()) in run.go feeds the resource to
|
||||
|
||||
@@ -4,6 +4,12 @@ All notable GoSentry changes are recorded in this file.
|
||||
|
||||
## 1.0.1 - 2026-08-04
|
||||
|
||||
**Windows failure notifications can show the app icon (experimental).**
|
||||
|
||||
- **`ui.run`** — after `NewWindow`, register `AppMetadata.Icon` on Windows so
|
||||
Fyne toasts pick up artwork without calling `SetIcon`, which would override
|
||||
the PE multi-size window/taskbar icon.
|
||||
|
||||
**Sample jobs include a disabled failure test for desktop notifications.**
|
||||
|
||||
- **`storage.defaultJobs`** — new disabled example *Failure notification test*
|
||||
|
||||
@@ -59,6 +59,7 @@ func Run(startInTray bool) {
|
||||
}
|
||||
|
||||
w := a.NewWindow("GoSentry " + app.Version)
|
||||
setWindowsNotificationIcon()
|
||||
prefs := a.Preferences()
|
||||
winW := float32(prefs.FloatWithFallback("window.width", defaultWindowWidth))
|
||||
winH := float32(prefs.FloatWithFallback("window.height", defaultWindowHeight))
|
||||
@@ -94,3 +95,20 @@ func Run(startInTray bool) {
|
||||
recordStartup(time.Since(started), true)
|
||||
a.Run()
|
||||
}
|
||||
|
||||
// setWindowsNotificationIcon supplies App.Icon for Fyne desktop notifications
|
||||
// without touching the window or taskbar icon. On Windows those come from the PE
|
||||
// gosentry.ico resource, so run.go must not call SetIcon. Fyne's NewWindow ends
|
||||
// with SetIcon(nil), which adopts App.Icon when it is already set — metadata
|
||||
// must therefore be registered only after the window is created. The tray icon
|
||||
// is set separately in tray.go via SetSystemTrayIcon.
|
||||
func setWindowsNotificationIcon() {
|
||||
if runtime.GOOS != "windows" {
|
||||
return
|
||||
}
|
||||
fyneapp.SetMetadata(fyne.AppMetadata{
|
||||
ID: appID,
|
||||
Name: "GoSentry",
|
||||
Icon: assets.Icon(),
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user