ui.app.SetMenu(gogpu.NewMenu().
AddItem(gogpu.MenuItem{Title: "About Fractal", Role: gogpu.RoleAbout, Action: func() {
ui.aboutWindow.Show()
ui.aboutWindowHasFocus.Store(true)
}}).
AddItem(gogpu.MenuItem{Separator: true}).
AddItem(gogpu.MenuItem{Title: "Settings…", Role: gogpu.RolePreferences}).
AddItem(gogpu.MenuItem{Separator: true}).
AddItem(gogpu.MenuItem{Title: "Services", Role: gogpu.RoleServices}).
AddItem(gogpu.MenuItem{Separator: true}).
AddItem(gogpu.MenuItem{Title: "Hide Fractal", Role: gogpu.RoleHide}).
AddItem(gogpu.MenuItem{Title: "Hide Others", Role: gogpu.RoleHideOthers}).
AddItem(gogpu.MenuItem{Title: "Show All", Role: gogpu.RoleShowAll}).
AddItem(gogpu.MenuItem{Separator: true}).
AddItem(gogpu.MenuItem{Title: "Quit Fractal", Role: gogpu.RoleQuit, Action: func() { ui.app.Quit() }}))
var (
drawOnce sync.Once
release func()
)
ui.aboutWindow.SetOnPointer(func(e gpucontext.PointerEvent) {
if e.Type == gpucontext.PointerDown {
ui.aboutWindowHasFocus.Store(true)
}
})
ui.aboutWindow.SetOnKeyPress(func(key gpucontext.Key, mods gpucontext.Modifiers) {
if mods.HasSuper() && key == gpucontext.KeyW {
ui.hideAboutWindow.Store(true)
}
})
ui.aboutWindow.SetOnDraw(func(dc *gogpu.Context) {
drawOnce.Do(func() {
release = drawAboutWindow(ui.app, dc, &ui.renderer)
})
})
ui.aboutWindow.SetOnClose(func() bool {
if release != nil {
release()
}
ui.hideAboutWindow.Store(true)
return false
})
}