@ -84,12 +84,13 @@ type Menu struct {
bgCancel context . CancelFunc
bgCancel context . CancelFunc
// Top-level menu items
// Top-level menu items
connect * systray . MenuItem
connect * systray . MenuItem
disconnect * systray . MenuItem
disconnect * systray . MenuItem
self * systray . MenuItem
self * systray . MenuItem
exitNodes * systray . MenuItem
exitNodes * systray . MenuItem
more * systray . MenuItem
more * systray . MenuItem
quit * systray . MenuItem
rebuildMenu * systray . MenuItem
quit * systray . MenuItem
rebuildCh chan struct { } // triggers a menu rebuild
rebuildCh chan struct { } // triggers a menu rebuild
accountsCh chan ipn . ProfileID
accountsCh chan ipn . ProfileID
@ -295,6 +296,17 @@ func (menu *Menu) rebuild() {
} )
} )
}
}
// TODO(#15528): this menu item shouldn't be necessary at all,
// but is at least more discoverable than having users switch profiles or exit nodes.
menu . rebuildMenu = systray . AddMenuItem ( "Rebuild menu" , "Fix missing menu items" )
onClick ( ctx , menu . rebuildMenu , func ( ctx context . Context ) {
select {
case <- ctx . Done ( ) :
case menu . rebuildCh <- struct { } { } :
}
} )
menu . rebuildMenu . Enable ( )
menu . quit = systray . AddMenuItem ( "Quit" , "Quit the app" )
menu . quit = systray . AddMenuItem ( "Quit" , "Quit the app" )
menu . quit . Enable ( )
menu . quit . Enable ( )