diff --git a/v3/pkg/application/dialogs_windows.go b/v3/pkg/application/dialogs_windows.go index 713917cc..cc8e04dd 100644 --- a/v3/pkg/application/dialogs_windows.go +++ b/v3/pkg/application/dialogs_windows.go @@ -11,13 +11,22 @@ import ( ) func (m *windowsApp) showAboutDialog(title string, message string, icon []byte) { - panic("implement me") + about := newDialogImpl(&MessageDialog{ + MessageDialogOptions: MessageDialogOptions{ + DialogType: InfoDialog, + Title: title, + Message: message, + }, + }) + about.UseAppIcon = true + about.show() } type windowsDialog struct { dialog *MessageDialog //dialogImpl unsafe.Pointer + UseAppIcon bool } func (m *windowsDialog) show() { @@ -25,8 +34,14 @@ func (m *windowsDialog) show() { title := w32.MustStringToUTF16Ptr(m.dialog.Title) message := w32.MustStringToUTF16Ptr(m.dialog.Message) flags := calculateMessageDialogFlags(m.dialog.MessageDialogOptions) + var button int32 - button, _ := windows.MessageBox(windows.HWND(0), message, title, flags|windows.MB_SYSTEMMODAL) + if m.UseAppIcon { + // 3 is the application icon + button, _ = w32.MessageBoxWithIcon(0, message, title, 3, windows.MB_OK|windows.MB_USERICON) + } else { + button, _ = windows.MessageBox(windows.HWND(0), message, title, flags|windows.MB_SYSTEMMODAL) + } // This maps MessageBox return values to strings responses := []string{"", "Ok", "Cancel", "Abort", "Retry", "Ignore", "Yes", "No", "", "", "Try Again", "Continue"} result := "Error" diff --git a/v3/pkg/application/menu.go b/v3/pkg/application/menu.go index 5a613903..f4a18f39 100644 --- a/v3/pkg/application/menu.go +++ b/v3/pkg/application/menu.go @@ -54,7 +54,9 @@ func (m *Menu) AddSubmenu(s string) *Menu { func (m *Menu) AddRole(role Role) *Menu { result := newRole(role) - m.items = append(m.items, result) + if result != nil { + m.items = append(m.items, result) + } return m } diff --git a/v3/pkg/application/menuitem_windows.go b/v3/pkg/application/menuitem_windows.go index 26509976..64cdf280 100644 --- a/v3/pkg/application/menuitem_windows.go +++ b/v3/pkg/application/menuitem_windows.go @@ -186,8 +186,10 @@ func newSelectAllMenuItem() *MenuItem { } func newAboutMenuItem() *MenuItem { - panic("implement me") - + return newMenuItem("About " + globalApplication.options.Name). + OnClick(func(ctx *Context) { + globalApplication.ShowAboutDialog() + }) } func newCloseMenuItem() *MenuItem { diff --git a/v3/pkg/application/roles.go b/v3/pkg/application/roles.go index fe48a0d1..fd8f46ed 100644 --- a/v3/pkg/application/roles.go +++ b/v3/pkg/application/roles.go @@ -89,6 +89,9 @@ func newViewMenu() *MenuItem { } func newAppMenu() *MenuItem { + if runtime.GOOS != "darwin" { + return nil + } appMenu := NewMenu() appMenu.AddRole(About) appMenu.AddSeparator()